mdbq 4.0.40__py3-none-any.whl → 4.0.41__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.
- mdbq/__version__.py +1 -1
- mdbq/mysql/uploader.py +15 -25
- {mdbq-4.0.40.dist-info → mdbq-4.0.41.dist-info}/METADATA +1 -1
- {mdbq-4.0.40.dist-info → mdbq-4.0.41.dist-info}/RECORD +6 -6
- {mdbq-4.0.40.dist-info → mdbq-4.0.41.dist-info}/WHEEL +0 -0
- {mdbq-4.0.40.dist-info → mdbq-4.0.41.dist-info}/top_level.txt +0 -0
mdbq/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = '4.0.
|
1
|
+
VERSION = '4.0.41'
|
mdbq/mysql/uploader.py
CHANGED
@@ -525,8 +525,7 @@ class MySQLUploader:
|
|
525
525
|
'%Y-%m-%dT%H:%M:%S',
|
526
526
|
'%Y-%m-%d %H:%M:%S.%f',
|
527
527
|
'%Y/%-m/%-d', # 2023/1/8
|
528
|
-
'%Y
|
529
|
-
'%Y-%-m-%-d' # 2023-1-8
|
528
|
+
'%Y-%-m-%-d', # 2023-01-8
|
530
529
|
]
|
531
530
|
for fmt in formats:
|
532
531
|
try:
|
@@ -816,8 +815,11 @@ class MySQLUploader:
|
|
816
815
|
|
817
816
|
# 检查是否是百分比字符串
|
818
817
|
if isinstance(value, str):
|
819
|
-
if
|
820
|
-
|
818
|
+
if '%' in value:
|
819
|
+
if re.match(r'^-?\d+(\.\d+)?%$', value.strip()):
|
820
|
+
return 'DECIMAL(10, 4)' # 百分比转为小数,使用DECIMAL
|
821
|
+
else:
|
822
|
+
return 'VARCHAR(255)' # 不符合格式的百分比,视为字符串
|
821
823
|
|
822
824
|
if isinstance(value, bool):
|
823
825
|
return 'TINYINT(1)'
|
@@ -861,8 +863,8 @@ class MySQLUploader:
|
|
861
863
|
return 'MEDIUMTEXT'
|
862
864
|
else:
|
863
865
|
return 'LONGTEXT'
|
864
|
-
|
865
|
-
|
866
|
+
|
867
|
+
return 'VARCHAR(255)' # 默认字符串类型
|
866
868
|
|
867
869
|
def normalize_column_names(self, data: Union[pd.DataFrame, List[Dict[str, Any]]]) -> Union[
|
868
870
|
pd.DataFrame, List[Dict[str, Any]]]:
|
@@ -1317,7 +1319,7 @@ class MySQLUploader:
|
|
1317
1319
|
for col in dup_cols:
|
1318
1320
|
col_type = set_typ.get(col, '').lower()
|
1319
1321
|
if col_type.startswith('decimal'):
|
1320
|
-
scale = self._get_decimal_scale(col_type)
|
1322
|
+
_, scale = self._get_decimal_scale(col_type)
|
1321
1323
|
conditions.append(f"ROUND(`{col}`, {scale}) = ROUND(%s, {scale})")
|
1322
1324
|
else:
|
1323
1325
|
conditions.append(f"`{col}` = %s")
|
@@ -1346,24 +1348,12 @@ class MySQLUploader:
|
|
1346
1348
|
"""
|
1347
1349
|
return sql
|
1348
1350
|
|
1349
|
-
def _get_decimal_scale(self, decimal_type: str) -> int:
|
1350
|
-
"""
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
:raises: 无显式抛出异常,但解析失败时返回默认值2
|
1356
|
-
"""
|
1357
|
-
try:
|
1358
|
-
# 匹配DECIMAL类型中的精度和小数位数
|
1359
|
-
match = re.match(r'decimal\((\d+),\s*(\d+)\)', decimal_type.lower())
|
1360
|
-
if match:
|
1361
|
-
return int(match.group(2))
|
1362
|
-
except (ValueError, AttributeError, IndexError):
|
1363
|
-
pass
|
1364
|
-
|
1365
|
-
# 默认返回2位小数
|
1366
|
-
return 2
|
1351
|
+
def _get_decimal_scale(self, decimal_type: str) -> Tuple[int, int]:
|
1352
|
+
"""从DECIMAL类型字符串中提取精度和标度"""
|
1353
|
+
match = re.search(r'\((\d+)\s*,\s*(\d+)\)', decimal_type)
|
1354
|
+
if match:
|
1355
|
+
return int(match.group(1)), int(match.group(2))
|
1356
|
+
return 18, 2 # 默认值
|
1367
1357
|
|
1368
1358
|
def _prepare_insert_sql(
|
1369
1359
|
self,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
2
|
-
mdbq/__version__.py,sha256=
|
2
|
+
mdbq/__version__.py,sha256=X4VgvOxMoRU-YHIymW2NhCV8yy6pvwj9wlFGdVP8Di8,18
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
4
|
mdbq/aggregation/query_data.py,sha256=WtTFMN78jn43Y-nBTPAXhAK56w3wDuv_cj4YtzzGbZk,169797
|
5
5
|
mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
|
@@ -11,7 +11,7 @@ mdbq/mysql/deduplicator.py,sha256=AB3gL7ZwhcmzGHSu4UY4M6YZVPFZ2wlAN3BCcwAhegQ,73
|
|
11
11
|
mdbq/mysql/mysql.py,sha256=pDg771xBugCMSTWeskIFTi3pFLgaqgyG3smzf-86Wn8,56772
|
12
12
|
mdbq/mysql/s_query.py,sha256=1wJ3HVjHEF6FA-bVeeesRlsf73CZSvVTEQ51CF1OsE4,46786
|
13
13
|
mdbq/mysql/unique_.py,sha256=MaztT-WIyEQUs-OOYY4pFulgHVcXR1BfCy3QUz0XM_U,21127
|
14
|
-
mdbq/mysql/uploader.py,sha256=
|
14
|
+
mdbq/mysql/uploader.py,sha256=PQKFohU32hRyUW3sAgWigbLnBh4h9ZydF4RNC3wNAyo,82640
|
15
15
|
mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
16
16
|
mdbq/other/download_sku_picture.py,sha256=X66sVdvVgzoNzmgVJyPtd7bjEvctEKtLPblEPF65EWc,46940
|
17
17
|
mdbq/other/error_handler.py,sha256=4p5haAXSY-P78stp4Xwo_MwAngWYqyKj5ogWIuYXMeY,12631
|
@@ -25,7 +25,7 @@ mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
|
|
25
25
|
mdbq/redis/getredis.py,sha256=vpBuNc22uj9Vr-_Dh25_wpwWM1e-072EAAIBdB_IpL0,23494
|
26
26
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
27
27
|
mdbq/spider/aikucun.py,sha256=XptHjGzbout9IYzWAOQUpMMV5qEgLTU8pL1ZGt8oNEA,21868
|
28
|
-
mdbq-4.0.
|
29
|
-
mdbq-4.0.
|
30
|
-
mdbq-4.0.
|
31
|
-
mdbq-4.0.
|
28
|
+
mdbq-4.0.41.dist-info/METADATA,sha256=FDyMAo_9iwFqvELSDiPqPM6GhkNj0htFROeZiZYNMcU,364
|
29
|
+
mdbq-4.0.41.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
30
|
+
mdbq-4.0.41.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
31
|
+
mdbq-4.0.41.dist-info/RECORD,,
|
File without changes
|
File without changes
|