omop-lite 0.0.17__py3-none-any.whl → 0.0.18__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
omop_lite/db/sqlserver.py CHANGED
@@ -37,7 +37,7 @@ class SQLServerDatabase(Database):
37
37
  with open(str(file_path), "r", encoding="utf-8", newline="") as f:
38
38
  reader = csv.reader(f, delimiter=delimiter)
39
39
  headers = next(reader)
40
-
40
+
41
41
  columns = ", ".join(f"[{col}]" for col in headers)
42
42
  placeholders = ", ".join(["?" for _ in headers])
43
43
  insert_sql = f"INSERT INTO {settings.schema_name}.[{table_name}] ({columns}) VALUES ({placeholders})"
@@ -46,9 +46,14 @@ class SQLServerDatabase(Database):
46
46
  try:
47
47
  cursor = conn.cursor()
48
48
  for line_no, row in enumerate(reader, start=2):
49
- if len(row) != len(headers):
50
- print(f"Row {line_no} skipped: expected {len(headers)} values, got {len(row)} – {row}")
51
- continue
49
+ # Pad short rows
50
+ if len(row) < len(headers):
51
+ row += [None] * (len(headers) - len(row))
52
+ logger.info(f"Row {line_no} padded: {row}")
53
+ elif len(row) > len(headers):
54
+ logger.info(f"Row {line_no} trimmed: too many values ({len(row)}), expected {len(headers)} – trimming.")
55
+ row = row[:len(headers)]
56
+
52
57
  cursor.execute(insert_sql, row)
53
58
  conn.commit()
54
59
  finally:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omop-lite
3
- Version: 0.0.17
3
+ Version: 0.0.18
4
4
  Summary: Get an OMOP CDM database running quickly.
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.13
@@ -3,7 +3,7 @@ omop_lite/settings.py,sha256=234EK12WAHy2aRlahw415qArfBFPWCFa0ANYWt2T15s,641
3
3
  omop_lite/db/__init__.py,sha256=Wlu-tkFf2M6jkHJE020dim1ziCGia0cFxS7UOqcE28o,568
4
4
  omop_lite/db/base.py,sha256=RA2dMzgB-dkR0R5Rv6HZqnYf726gXGRJ0G9cPGoc-gg,5992
5
5
  omop_lite/db/postgres.py,sha256=inURED1rk9LMIWojN7qszQjdj2M3nj0fcMCPB0TPW3o,3083
6
- omop_lite/db/sqlserver.py,sha256=K_8VZVSR6bqzVMIbY2gRJOxrkY6F16_vzyBCtmYdt04,2361
6
+ omop_lite/db/sqlserver.py,sha256=d-B7W0K96CPTH-HT02i0pljxgb9hVdAfXN-7COiZF4s,2603
7
7
  omop_lite/scripts/fts.sql,sha256=PMZOImGgF0Dszqx_0BFPXBDf-7xdzt-klMmOG1wwGQ4,173
8
8
  omop_lite/scripts/mssql/constraints.sql,sha256=y_nlWWiyR8EZ_9LtEl4-6qksXplqGT9yUsU_R9w2pZ8,32206
9
9
  omop_lite/scripts/mssql/ddl.sql,sha256=kcU2f0n8XIQDAD2uqXicpAwKwkS3801Vos3b2llgQIM,19522
@@ -39,8 +39,8 @@ omop_lite/synthetic/1000/OBSERVATION_PERIOD.csv,sha256=O6YvudsW5AL2sx124hyW1YhP9
39
39
  omop_lite/synthetic/1000/PERSON.csv,sha256=ObojT1gFHrpmCnCfjO6G77VBzf-MrBMpRpd8L4wOk_o,113287
40
40
  omop_lite/synthetic/1000/PROCEDURE_OCCURRENCE.csv,sha256=iBGRwi6RGysHYBfjQxmEaUDGDqDtSCIN3ABMDRZKPvE,1555130
41
41
  omop_lite/synthetic/1000/VISIT_OCCURRENCE.csv,sha256=qYiSW_C4En8u5dKr2sKLzG9rdYjaK72XHUnmtDF8OJs,3863798
42
- omop_lite-0.0.17.dist-info/METADATA,sha256=kvHtFrY4p9IZ-ZDKdPgj52t25J2QIQJnn-vRiao2NgI,5372
43
- omop_lite-0.0.17.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
44
- omop_lite-0.0.17.dist-info/entry_points.txt,sha256=2Y60p_74OjOkkEh0EK7yDD5c2blbD-ZGDij8-fVgXdM,45
45
- omop_lite-0.0.17.dist-info/licenses/LICENSE,sha256=muHgK_sUsFJ3OnDh62vGn2QH4sf_SymtlfFqp8tF9n0,1075
46
- omop_lite-0.0.17.dist-info/RECORD,,
42
+ omop_lite-0.0.18.dist-info/METADATA,sha256=An_JckIhfQWTVlqJnwiTHIOe1ehyOkakDX5qNumwYu4,5372
43
+ omop_lite-0.0.18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
44
+ omop_lite-0.0.18.dist-info/entry_points.txt,sha256=2Y60p_74OjOkkEh0EK7yDD5c2blbD-ZGDij8-fVgXdM,45
45
+ omop_lite-0.0.18.dist-info/licenses/LICENSE,sha256=muHgK_sUsFJ3OnDh62vGn2QH4sf_SymtlfFqp8tF9n0,1075
46
+ omop_lite-0.0.18.dist-info/RECORD,,