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 CHANGED
@@ -1 +1 @@
1
- VERSION = '4.0.40'
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-%m-%-d', # 2023-01-8
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 value.endswith('%'):
820
- return 'DECIMAL(10,4)' # 百分比统一使用DECIMAL(10,4)
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
- else:
865
- return 'VARCHAR(255)'
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
- 从DECIMAL类型定义中提取小数位数
1352
-
1353
- :param decimal_type: DECIMAL类型字符串,如'DECIMAL(10,4)'
1354
- :return: 小数位数
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,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.0.40
3
+ Version: 4.0.41
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,5 +1,5 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=YnJ4yS3LCjrBMdYJ8VXs6BM72GyNYWV1Zwk0iW2hB1k,18
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=FOroXUIsxJaMCqBeepUuymCpdhJsid4yiC_Rs1BT1sw,82823
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.40.dist-info/METADATA,sha256=FUd8oXQ4zlMFv9neapfYa24uQl84PHgt3S0aAEbEjGo,364
29
- mdbq-4.0.40.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
30
- mdbq-4.0.40.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
31
- mdbq-4.0.40.dist-info/RECORD,,
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