pjdev-sqlmodel 3.4.2a3__tar.gz → 3.5.0a1__tar.gz
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.
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/PKG-INFO +1 -1
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/src/pjdev_sqlmodel/__about__.py +1 -1
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/src/pjdev_sqlmodel/service.py +6 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/src/pjdev_sqlmodel/utilities.py +65 -5
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/.gitignore +0 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/LICENSE.txt +0 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/README.md +0 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/pyproject.toml +0 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/src/pjdev_sqlmodel/__init__.py +0 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/src/pjdev_sqlmodel/db_models.py +0 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/src/pjdev_sqlmodel/settings.py +0 -0
- {pjdev_sqlmodel-3.4.2a3 → pjdev_sqlmodel-3.5.0a1}/tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pjdev-sqlmodel
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0a1
|
|
4
4
|
Project-URL: Documentation, https://gitlab.purplejay.net/keystone/python
|
|
5
5
|
Project-URL: Issues, https://gitlab.purplejay.net/keystone/python/issues
|
|
6
6
|
Project-URL: Source, https://gitlab.purplejay.net/keystone/python
|
|
@@ -42,6 +42,12 @@ def configure_single_context(settings: SqlModelSettings, tables: List[Type[Model
|
|
|
42
42
|
__ctx.engine = initialize_engine(settings, tables)
|
|
43
43
|
|
|
44
44
|
|
|
45
|
+
def get_engine() -> Engine:
|
|
46
|
+
if __ctx.engine is None:
|
|
47
|
+
raise ValueError("No engine has been initialized")
|
|
48
|
+
return __ctx.engine
|
|
49
|
+
|
|
50
|
+
|
|
45
51
|
@contextmanager
|
|
46
52
|
def session_context() -> SQLModelSession:
|
|
47
53
|
with SQLModelSession(__ctx.engine) as session:
|
|
@@ -7,7 +7,8 @@ from pydantic import ValidationError, BaseModel
|
|
|
7
7
|
import pandas as pd
|
|
8
8
|
from openpyxl.reader.excel import load_workbook
|
|
9
9
|
from loguru import logger
|
|
10
|
-
|
|
10
|
+
from sqlalchemy import Engine
|
|
11
|
+
from pjdev_sqlmodel import service
|
|
11
12
|
from pjdev_sqlmodel.db_models import ModelBase
|
|
12
13
|
from pjdev_sqlmodel.service import session_context
|
|
13
14
|
|
|
@@ -123,13 +124,72 @@ def __convert_to_models(
|
|
|
123
124
|
return data
|
|
124
125
|
|
|
125
126
|
|
|
126
|
-
def
|
|
127
|
-
|
|
127
|
+
def load_raw_csv_data(
|
|
128
|
+
filename: Path,
|
|
129
|
+
table_name: str,
|
|
130
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
131
|
+
engine: Optional[Engine] = None,
|
|
132
|
+
) -> None:
|
|
133
|
+
df = __read_csv(filename, data_type_map=data_type_map)
|
|
134
|
+
|
|
135
|
+
if df is None:
|
|
136
|
+
return
|
|
137
|
+
|
|
138
|
+
engine = service.get_engine() if engine is None else engine
|
|
139
|
+
df.to_sql(
|
|
140
|
+
table_name,
|
|
141
|
+
con=engine,
|
|
142
|
+
if_exists="replace",
|
|
143
|
+
index_label="row_id",
|
|
144
|
+
dtype=data_type_map,
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def load_raw_excel_data(
|
|
149
|
+
filename: Path,
|
|
150
|
+
table_name: str,
|
|
151
|
+
header_ndx: int = 0,
|
|
152
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
153
|
+
engine: Optional[Engine] = None,
|
|
154
|
+
) -> None:
|
|
155
|
+
df = __read_excel(filename, header_ndx=header_ndx, data_type_map=data_type_map)
|
|
156
|
+
|
|
157
|
+
if df is None:
|
|
158
|
+
return
|
|
159
|
+
|
|
160
|
+
engine = service.get_engine() if engine is None else engine
|
|
161
|
+
df.to_sql(
|
|
162
|
+
table_name,
|
|
163
|
+
con=engine,
|
|
164
|
+
if_exists="replace",
|
|
165
|
+
index_label="row_id",
|
|
166
|
+
dtype=data_type_map,
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def __read_csv(
|
|
171
|
+
file: Path | str,
|
|
172
|
+
cols: Optional[List[str]] = None,
|
|
173
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
174
|
+
) -> pd.DataFrame:
|
|
175
|
+
return pd.read_csv(
|
|
176
|
+
file, engine="pyarrow", usecols=cols, na_filter=False, dtype=data_type_map
|
|
177
|
+
)
|
|
128
178
|
|
|
129
179
|
|
|
130
|
-
def __read_excel(
|
|
180
|
+
def __read_excel(
|
|
181
|
+
file: Path | str,
|
|
182
|
+
cols: Optional[List[str]] = None,
|
|
183
|
+
header_ndx: int = 0,
|
|
184
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
185
|
+
) -> pd.DataFrame:
|
|
131
186
|
return pd.read_excel(
|
|
132
|
-
io=file,
|
|
187
|
+
io=file,
|
|
188
|
+
usecols=cols,
|
|
189
|
+
na_filter=False,
|
|
190
|
+
header=header_ndx,
|
|
191
|
+
engine="calamine",
|
|
192
|
+
dtype=data_type_map,
|
|
133
193
|
)
|
|
134
194
|
|
|
135
195
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|