vavacars-data-utils 1.1.3__tar.gz → 1.2.0__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.
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/PKG-INFO +10 -1
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/setup.cfg +1 -1
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/sql/sql_helper.py +19 -5
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/PKG-INFO +10 -1
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/README.md +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/pyproject.toml +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/test/utils/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/test/utils/test_strings.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/azure/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/azure/az_helper.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/bigquery/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/bigquery/bigquery_helper.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/camunda/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/camunda/camunda_helper.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/email/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/email/email_helper.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/salesforce/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/salesforce/salesforce_helper.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/smartiq/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/smartiq/smartiq_helper.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/smartiq/smartiq_helper_v2.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/sql/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/turkey/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/turkey/dates.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/utils/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/utils/callables.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/utils/comparisons.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/utils/naming.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/utils/singleton.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/utils/strings.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/utils/utils.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/vavaprice/__init__.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/vavaprice/vavaprice_helper.py +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/SOURCES.txt +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/dependency_links.txt +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/requires.txt +0 -0
- {vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vavacars_data_utils
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Package with utils
|
|
5
5
|
Home-page: https://dev.azure.com/vavacars/DataScience/_git/Data.Utils
|
|
6
6
|
Author: Vavacars Data Science Team
|
|
@@ -10,6 +10,15 @@ Classifier: Programming Language :: Python :: 3
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Requires-Python: >=3.6
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: pandas
|
|
14
|
+
Requires-Dist: PyYAML>=6.0
|
|
15
|
+
Requires-Dist: requests
|
|
16
|
+
Requires-Dist: sqlalchemy<2.0
|
|
17
|
+
Requires-Dist: redis
|
|
18
|
+
Requires-Dist: msal
|
|
19
|
+
Requires-Dist: pyodbc
|
|
20
|
+
Requires-Dist: unidecode
|
|
21
|
+
Requires-Dist: azure-communication-email
|
|
13
22
|
|
|
14
23
|
# Vavacars
|
|
15
24
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from sqlalchemy import create_engine, event, text
|
|
2
2
|
from sqlalchemy.engine.url import URL
|
|
3
|
+
from sqlalchemy.engine.cursor import LegacyCursorResult
|
|
4
|
+
|
|
3
5
|
from msal import ConfidentialClientApplication
|
|
4
6
|
import urllib
|
|
5
7
|
import struct
|
|
@@ -175,7 +177,7 @@ class SQL_Helper:
|
|
|
175
177
|
chunksize (int): number of rows in each batch to be written at a time
|
|
176
178
|
"""
|
|
177
179
|
if self.engine_type == "sql_server":
|
|
178
|
-
tmp_table_name = f"##{table_name}_tmp_{random.randrange(0,
|
|
180
|
+
tmp_table_name = f"##{table_name}_tmp_{random.randrange(0, 1000)}" # This has to be a global table
|
|
179
181
|
create_sql_model = """
|
|
180
182
|
SELECT TOP 0 * INTO dbo.{tmp_table_name} FROM dbo.{table_name}
|
|
181
183
|
"""
|
|
@@ -196,8 +198,11 @@ class SQL_Helper:
|
|
|
196
198
|
WHERE {not_exists_part_cols}
|
|
197
199
|
);
|
|
198
200
|
"""
|
|
201
|
+
col_names = [f'[{x}]' for x in df.columns]
|
|
202
|
+
upsert_cols = [f'[{x}]' for x in upsert_cols]
|
|
203
|
+
|
|
199
204
|
elif self.engine_type == "mysql":
|
|
200
|
-
tmp_table_name = f"{table_name}_tmp_{random.randrange(0,
|
|
205
|
+
tmp_table_name = f"{table_name}_tmp_{random.randrange(0, 1000)}"
|
|
201
206
|
create_sql_model = """
|
|
202
207
|
CREATE TEMPORARY TABLE IF NOT EXISTS {tmp_table_name} LIKE {table_name};
|
|
203
208
|
"""
|
|
@@ -217,6 +222,9 @@ class SQL_Helper:
|
|
|
217
222
|
WHERE {not_exists_part_cols}
|
|
218
223
|
);
|
|
219
224
|
"""
|
|
225
|
+
col_names = [f'`{x}`' for x in df.columns]
|
|
226
|
+
upsert_cols = [f'`{x}`' for x in upsert_cols]
|
|
227
|
+
|
|
220
228
|
else:
|
|
221
229
|
raise NotImplementedError(f"Method not implemented for {self.engine_type} engine")
|
|
222
230
|
|
|
@@ -233,7 +241,6 @@ class SQL_Helper:
|
|
|
233
241
|
df.to_sql(tmp_table_name, conn, if_exists="append", index=False, chunksize=chunksize)
|
|
234
242
|
|
|
235
243
|
# UPDATE Existing
|
|
236
|
-
col_names = list(df.columns)
|
|
237
244
|
set_part = []
|
|
238
245
|
for col in col_names:
|
|
239
246
|
set_part.append(set_part_sql_model.format(col=col))
|
|
@@ -263,7 +270,10 @@ class SQL_Helper:
|
|
|
263
270
|
not_exists_part_cols=not_exists_part_cols,
|
|
264
271
|
)
|
|
265
272
|
conn.execute(text(insert_sql))
|
|
266
|
-
|
|
273
|
+
|
|
274
|
+
# DROP tmp table
|
|
275
|
+
conn.execute(text(f"DROP TABLE {tmp_table_name};"))
|
|
276
|
+
|
|
267
277
|
trans.commit()
|
|
268
278
|
except Exception as ex:
|
|
269
279
|
LOGGER.warning(str(ex))
|
|
@@ -331,7 +341,7 @@ class SQL_Helper:
|
|
|
331
341
|
[f"{k} = {_value_to_str(row[k])}" if not pd.isna(row[k]) else f"{k} IS NULL" for k in keys]
|
|
332
342
|
)
|
|
333
343
|
|
|
334
|
-
exists = self._engine.execute(f"SELECT
|
|
344
|
+
exists = int(self._engine.execute(f"SELECT COUNT(1) FROM {table_name} WHERE {condition_exists}").first()[0])
|
|
335
345
|
|
|
336
346
|
if exists:
|
|
337
347
|
self.update_row(row, keys, table_name)
|
|
@@ -339,3 +349,7 @@ class SQL_Helper:
|
|
|
339
349
|
self.write_row(row, table_name)
|
|
340
350
|
|
|
341
351
|
return "UPDATE" if exists else "CREATE"
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
def execute(self, query: str) -> LegacyCursorResult:
|
|
355
|
+
return self._engine.execute(query)
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vavacars-data-utils
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Package with utils
|
|
5
5
|
Home-page: https://dev.azure.com/vavacars/DataScience/_git/Data.Utils
|
|
6
6
|
Author: Vavacars Data Science Team
|
|
@@ -10,6 +10,15 @@ Classifier: Programming Language :: Python :: 3
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Requires-Python: >=3.6
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: pandas
|
|
14
|
+
Requires-Dist: PyYAML>=6.0
|
|
15
|
+
Requires-Dist: requests
|
|
16
|
+
Requires-Dist: sqlalchemy<2.0
|
|
17
|
+
Requires-Dist: redis
|
|
18
|
+
Requires-Dist: msal
|
|
19
|
+
Requires-Dist: pyodbc
|
|
20
|
+
Requires-Dist: unidecode
|
|
21
|
+
Requires-Dist: azure-communication-email
|
|
13
22
|
|
|
14
23
|
# Vavacars
|
|
15
24
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/bigquery/bigquery_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/camunda/camunda_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/salesforce/salesforce_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/smartiq/smartiq_helper.py
RENAMED
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/smartiq/smartiq_helper_v2.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vava_utils/vavaprice/vavaprice_helper.py
RENAMED
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/requires.txt
RENAMED
|
File without changes
|
{vavacars_data_utils-1.1.3 → vavacars_data_utils-1.2.0}/vavacars_data_utils.egg-info/top_level.txt
RENAMED
|
File without changes
|