pjdev-sqlmodel 4.1.0a2__tar.gz → 4.2.0a2__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-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/PKG-INFO +1 -1
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/__about__.py +1 -1
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/models/settings_models.py +5 -1
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/utilities.py +4 -39
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/.gitignore +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/LICENSE.txt +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/README.md +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/pyproject.toml +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/__init__.py +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/models/__init__.py +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/models/db_models.py +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/settings_service.py +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/sqlmodel_service.py +0 -0
- {pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pjdev-sqlmodel
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.2.0a2
|
|
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
|
{pjdev_sqlmodel-4.1.0a2 → pjdev_sqlmodel-4.2.0a2}/src/pjdev_sqlmodel/models/settings_models.py
RENAMED
|
@@ -54,5 +54,9 @@ class SqliteSettings(SqlModelSettings):
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
class PostgresSettings(SqlModelSettings):
|
|
57
|
+
username: str
|
|
58
|
+
password: str
|
|
59
|
+
port: int = 5432
|
|
60
|
+
|
|
57
61
|
def get_connection_string(self) -> str:
|
|
58
|
-
return f"postgresql+psycopg
|
|
62
|
+
return f"postgresql+psycopg://{self.username}:{self.password}@{self.host}:{self.port}/{self.db_name}"
|
|
@@ -8,7 +8,6 @@ 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 sqlmodel import select
|
|
12
11
|
|
|
13
12
|
from pjdev_sqlmodel import session_context, sqlmodel_service
|
|
14
13
|
from pjdev_sqlmodel.models import ModelBase
|
|
@@ -16,14 +15,10 @@ from pjdev_sqlmodel.models import ModelBase
|
|
|
16
15
|
T = TypeVar("T", bound=ModelBase)
|
|
17
16
|
|
|
18
17
|
|
|
19
|
-
def get_files_in_directory(directory: Path
|
|
20
|
-
|
|
21
|
-
f for f in directory.glob(
|
|
18
|
+
def get_files_in_directory(directory: Path) -> List[Path]:
|
|
19
|
+
return [f for f in directory.glob("**/*.xlsx") if not f.name.startswith("~$")] + [
|
|
20
|
+
f for f in directory.glob("**/*.csv")
|
|
22
21
|
]
|
|
23
|
-
if force_presence and len(file_obj) == 0:
|
|
24
|
-
logger.error(f'Failed to find files matching the {directory}/{file_name} pattern and presence is required. Exiting...')
|
|
25
|
-
exit(1)
|
|
26
|
-
return file_obj
|
|
27
22
|
|
|
28
23
|
|
|
29
24
|
def get_csv_columns(file_path):
|
|
@@ -172,36 +167,6 @@ def load_raw_excel_data(
|
|
|
172
167
|
)
|
|
173
168
|
|
|
174
169
|
|
|
175
|
-
def convert_table_to_df(InputTable: type[BaseModel]):
|
|
176
|
-
with session_context() as session:
|
|
177
|
-
statement = select(InputTable)
|
|
178
|
-
results = session.exec(statement).all()
|
|
179
|
-
|
|
180
|
-
headers = []
|
|
181
|
-
field_names = []
|
|
182
|
-
for name, annotation in InputTable.__annotations__.items():
|
|
183
|
-
field = InputTable.__fields__[name]
|
|
184
|
-
alias = field.alias if field.alias else name
|
|
185
|
-
headers.append(alias)
|
|
186
|
-
field_names.append(name)
|
|
187
|
-
|
|
188
|
-
data = []
|
|
189
|
-
for res in results:
|
|
190
|
-
new_obj = {}
|
|
191
|
-
for i in range(len(headers)):
|
|
192
|
-
header = headers[i]
|
|
193
|
-
field_name = field_names[i]
|
|
194
|
-
new_obj[header] = getattr(res, field_name)
|
|
195
|
-
data.append(new_obj)
|
|
196
|
-
df = pd.DataFrame(data)
|
|
197
|
-
return df
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
def convert_table_to_csv(InputTable: type[BaseModel], file: Path):
|
|
201
|
-
df = convert_table_to_df(InputTable)
|
|
202
|
-
df.to_csv(file, index=False)
|
|
203
|
-
|
|
204
|
-
|
|
205
170
|
def __read_csv(
|
|
206
171
|
file: Path | str,
|
|
207
172
|
cols: Optional[List[str]] = None,
|
|
@@ -243,4 +208,4 @@ def convert_to_csv(
|
|
|
243
208
|
df = pd.DataFrame(dict_data)
|
|
244
209
|
|
|
245
210
|
# Export DataFrame to CSV
|
|
246
|
-
df.to_csv(filename, index=index, columns=cols)
|
|
211
|
+
df.to_csv(filename, index=index, columns=cols)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|