mdbq 3.9.10__py3-none-any.whl → 3.9.11__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/mysql.py +1 -1669
- mdbq/mysql/uploader.py +30 -25
- {mdbq-3.9.10.dist-info → mdbq-3.9.11.dist-info}/METADATA +1 -1
- {mdbq-3.9.10.dist-info → mdbq-3.9.11.dist-info}/RECORD +7 -7
- {mdbq-3.9.10.dist-info → mdbq-3.9.11.dist-info}/WHEEL +0 -0
- {mdbq-3.9.10.dist-info → mdbq-3.9.11.dist-info}/top_level.txt +0 -0
mdbq/mysql/uploader.py
CHANGED
@@ -351,21 +351,29 @@ class MySQLUploader:
|
|
351
351
|
:raises ValueError: 如果日期格式无效或分表方式无效
|
352
352
|
"""
|
353
353
|
try:
|
354
|
-
# date_obj = datetime.datetime.strptime(date_value, '%Y-%m-%d
|
354
|
+
# date_obj = datetime.datetime.strptime(date_value, '%Y-%m-%d')
|
355
355
|
date_obj = self._validate_datetime(date_value, True)
|
356
356
|
except ValueError:
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
357
|
+
error_msg = f"`{table_name}` 无效的日期格式1: {date_value}"
|
358
|
+
logger.error(error_msg)
|
359
|
+
raise ValueError(error_msg)
|
360
|
+
|
361
|
+
# try:
|
362
|
+
# # date_obj = datetime.datetime.strptime(date_value, '%Y-%m-%d %H:%M:%S')
|
363
|
+
# date_obj = self._validate_datetime(date_value, True)
|
364
|
+
# except ValueError:
|
365
|
+
# try:
|
366
|
+
# # date_obj = datetime.datetime.strptime(date_value, '%Y-%m-%d')
|
367
|
+
# date_obj = self._validate_datetime(date_value, True)
|
368
|
+
# except ValueError:
|
369
|
+
# error_msg = f"无效的日期格式1: {date_value}"
|
370
|
+
# logger.error(error_msg)
|
371
|
+
# raise ValueError(error_msg)
|
364
372
|
|
365
373
|
if partition_by == 'year':
|
366
374
|
return f"{table_name}_{date_obj.year}"
|
367
375
|
elif partition_by == 'month':
|
368
|
-
return f"{table_name}_{date_obj.year}
|
376
|
+
return f"{table_name}_{date_obj.year}-{date_obj.month:02d}" # 这里和兼容旧版 `2025-05`,但可能是个隐患
|
369
377
|
else:
|
370
378
|
error_msg = "分表方式必须是 'year' 或 'month'"
|
371
379
|
logger.error(error_msg)
|
@@ -600,15 +608,14 @@ class MySQLUploader:
|
|
600
608
|
column_type_lower = column_type.lower()
|
601
609
|
|
602
610
|
# 处理百分比值
|
603
|
-
if
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
pass # 如果不是有效的百分比数字,继续正常处理
|
611
|
+
if str(value).strip().endswith('%'):
|
612
|
+
try:
|
613
|
+
# 移除百分号并转换为小数
|
614
|
+
percent_value = float(value.strip().replace('%', ''))
|
615
|
+
decimal_value = percent_value / 100
|
616
|
+
return decimal_value
|
617
|
+
except ValueError:
|
618
|
+
pass # 如果不是有效的百分比数字,继续正常处理
|
612
619
|
|
613
620
|
elif 'int' in column_type_lower:
|
614
621
|
if isinstance(value, str):
|
@@ -625,7 +632,7 @@ class MySQLUploader:
|
|
625
632
|
# 处理可能包含逗号的数字字符串
|
626
633
|
value = value.replace(',', '')
|
627
634
|
return float(value) if value is not None else None
|
628
|
-
elif '
|
635
|
+
elif 'date' in column_type_lower or 'time' in column_type_lower:
|
629
636
|
if isinstance(value, (datetime.datetime, pd.Timestamp)):
|
630
637
|
return value.strftime('%Y-%m-%d %H:%M:%S')
|
631
638
|
elif isinstance(value, str):
|
@@ -945,11 +952,9 @@ class MySQLUploader:
|
|
945
952
|
})
|
946
953
|
|
947
954
|
try:
|
948
|
-
#
|
949
|
-
|
950
|
-
|
951
|
-
# logger.error(error_msg)
|
952
|
-
# raise ValueError(error_msg)
|
955
|
+
# 验证参数
|
956
|
+
if not set_typ:
|
957
|
+
logger.debug(f'set_typ 参数缺失,建表不指定数据类型字典,后续存储数据容易引发异常')
|
953
958
|
|
954
959
|
if partition_by:
|
955
960
|
partition_by = str(partition_by).lower()
|
@@ -1286,7 +1291,7 @@ def main():
|
|
1286
1291
|
# 准备数据
|
1287
1292
|
data = [
|
1288
1293
|
{'日期': '2023-01-8', 'name': 'JACk', 'AGE': '24', 'salary': 555.1545},
|
1289
|
-
{'日期': '2023-01-15', 'name': 'Alice', 'AGE': 35, 'salary': 100},
|
1294
|
+
{'日期': '2023-01-15', 'name': 'Alice', 'AGE': 35, 'salary': '100'},
|
1290
1295
|
{'日期': '2023-01-15', 'name': 'Alice', 'AGE': 30, 'salary': 0.0},
|
1291
1296
|
{'日期': '2023-02-20', 'name': 'Bob', 'AGE': 25, 'salary': 45000.75}
|
1292
1297
|
]
|
@@ -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=zVFC_9Hi22FnOaPTZtjaH6okUJz6Vi_VZ5smgBB5eZQ,18
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
4
|
mdbq/aggregation/optimize.py,sha256=2oalzD9weZhDclUC22OLxYa8Zj7KnmsGUoUau_Jlyc4,19796
|
5
5
|
mdbq/aggregation/query_data.py,sha256=5_OzjGR5Sq00q-EgAYmSE5V9i4Solw9y4hkldl4mvt8,179808
|
@@ -10,9 +10,9 @@ mdbq/log/mylogger.py,sha256=jHCVO7KPQrg2kcCaIrakHivZmFBJyy-24sIn2rsbK4Y,24440
|
|
10
10
|
mdbq/log/spider_logging.py,sha256=-ozWWEGm3HVv604ozs_OOvVwumjokmUPwbaodesUrPY,1664
|
11
11
|
mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
12
12
|
mdbq/mysql/deduplicator.py,sha256=brhX3eyE8-kn3nAYweKfBbAkXiNcyw_pL4CTyPqmPBg,21983
|
13
|
-
mdbq/mysql/mysql.py,sha256=
|
13
|
+
mdbq/mysql/mysql.py,sha256=0Yaaw178wk_iRxI2PpVGeec_tDal4Fq5jyCyB0scgvQ,55339
|
14
14
|
mdbq/mysql/s_query.py,sha256=X055aLRAgxVvueXx4NbfNjp6MyBI02_XBb1pTKw09L0,8660
|
15
|
-
mdbq/mysql/uploader.py,sha256=
|
15
|
+
mdbq/mysql/uploader.py,sha256=_Z0m7nEXzmxY6josxBeQR7nG-bsL8FQHR_RDLjj7IzE,52480
|
16
16
|
mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
17
17
|
mdbq/other/download_sku_picture.py,sha256=YU8DxKMXbdeE1OOKEA848WVp62jYHw5O4tXTjUdq9H0,44832
|
18
18
|
mdbq/other/otk.py,sha256=iclBIFbQbhlqzUbcMMoePXBpcP1eZ06ZtjnhcA_EbmE,7241
|
@@ -25,7 +25,7 @@ mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
|
|
25
25
|
mdbq/redis/getredis.py,sha256=Uk8-cOWT0JU1qRyIVqdbYokSLvkDIAfcokmYj1ebw8k,24104
|
26
26
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
27
27
|
mdbq/spider/aikucun.py,sha256=OhyEv1VyAKTOHjLDM37iNDQeRg5OnrNoKODoG2VxHes,19806
|
28
|
-
mdbq-3.9.
|
29
|
-
mdbq-3.9.
|
30
|
-
mdbq-3.9.
|
31
|
-
mdbq-3.9.
|
28
|
+
mdbq-3.9.11.dist-info/METADATA,sha256=NuMxnqS57k-Z2opqI-yPWqkFPdTJqPJUaqZSwUDb1uY,364
|
29
|
+
mdbq-3.9.11.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
30
|
+
mdbq-3.9.11.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
31
|
+
mdbq-3.9.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|