mdbq 3.10.4__py3-none-any.whl → 3.10.5__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 +8 -25
- {mdbq-3.10.4.dist-info → mdbq-3.10.5.dist-info}/METADATA +1 -1
- {mdbq-3.10.4.dist-info → mdbq-3.10.5.dist-info}/RECORD +6 -6
- {mdbq-3.10.4.dist-info → mdbq-3.10.5.dist-info}/WHEEL +0 -0
- {mdbq-3.10.4.dist-info → mdbq-3.10.5.dist-info}/top_level.txt +0 -0
mdbq/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = '3.10.
|
1
|
+
VERSION = '3.10.5'
|
mdbq/mysql/uploader.py
CHANGED
@@ -925,7 +925,6 @@ class MySQLUploader:
|
|
925
925
|
raise ValueError(f"行:{row_idx}, 列:`{col_name}`-> 报错: {str(e)}")
|
926
926
|
prepared_data.append(prepared_row)
|
927
927
|
|
928
|
-
logger.debug(f"已准备 {len(prepared_data)} 行数据")
|
929
928
|
return prepared_data, filtered_set_typ
|
930
929
|
|
931
930
|
def upload_data(
|
@@ -961,7 +960,7 @@ class MySQLUploader:
|
|
961
960
|
:param auto_create: 表不存在时是否自动创建,默认为True
|
962
961
|
:param indexes: 需要创建索引的列列表,可选
|
963
962
|
:param update_on_duplicate: 遇到重复数据时是否更新旧数据(默认为False)
|
964
|
-
:param transaction_mode:
|
963
|
+
:param transaction_mode: 事务模式,可选值:
|
965
964
|
- 'row' : 逐行提交事务(错误隔离性好)
|
966
965
|
- 'batch' : 整批提交事务(性能最优)
|
967
966
|
- 'hybrid' : 混合模式(每N行提交,平衡性能与安全性)
|
@@ -981,14 +980,11 @@ class MySQLUploader:
|
|
981
980
|
'分表方式': partition_by,
|
982
981
|
'排重': check_duplicate,
|
983
982
|
'传入': len(data) if hasattr(data, '__len__') else 1,
|
984
|
-
'自动建表': auto_create
|
983
|
+
# '自动建表': auto_create
|
985
984
|
})
|
986
985
|
|
987
986
|
try:
|
988
987
|
# 验证参数
|
989
|
-
if not set_typ:
|
990
|
-
logger.debug(f'set_typ 参数缺失,建表不指定数据类型字典,后续存储数据容易引发异常')
|
991
|
-
|
992
988
|
if partition_by:
|
993
989
|
partition_by = str(partition_by).lower()
|
994
990
|
if partition_by not in ['year', 'month']:
|
@@ -1084,7 +1080,7 @@ class MySQLUploader:
|
|
1084
1080
|
'库': db_name,
|
1085
1081
|
'表': table_name,
|
1086
1082
|
'批次': batch_id,
|
1087
|
-
'
|
1083
|
+
'finish': success_flag,
|
1088
1084
|
# '耗时': round(time.time() - upload_start, 2),
|
1089
1085
|
'数据行': initial_row_count
|
1090
1086
|
})
|
@@ -1114,7 +1110,7 @@ class MySQLUploader:
|
|
1114
1110
|
:param batch_size: 批量插入大小,默认为1000
|
1115
1111
|
:param update_on_duplicate: 遇到重复数据时是否更新旧数据(默认为False)
|
1116
1112
|
:param batch_id: 批次ID用于日志追踪,可选
|
1117
|
-
:param transaction_mode:
|
1113
|
+
:param transaction_mode: 事务模式,可选值:
|
1118
1114
|
- 'row' : 逐行提交事务(错误隔离性好)
|
1119
1115
|
- 'batch' : 整批提交事务(性能最优)
|
1120
1116
|
- 'hybrid' : 混合模式(每N行提交,平衡性能与安全性)
|
@@ -1143,11 +1139,11 @@ class MySQLUploader:
|
|
1143
1139
|
logger.info('插入完成', {
|
1144
1140
|
'库': db_name,
|
1145
1141
|
'表': table_name,
|
1146
|
-
'
|
1142
|
+
'总计': len(data),
|
1147
1143
|
'插入': total_inserted,
|
1148
1144
|
'跳过': total_skipped,
|
1149
1145
|
'失败': total_failed,
|
1150
|
-
'
|
1146
|
+
'事务模式': transaction_mode,
|
1151
1147
|
})
|
1152
1148
|
|
1153
1149
|
def _validate_transaction_mode(self, mode: str) -> str:
|
@@ -1345,7 +1341,7 @@ class MySQLUploader:
|
|
1345
1341
|
'批次': f'{batch_id} {batch_index + 1}/{total_data_length}',
|
1346
1342
|
'error_type': type(e).__name__,
|
1347
1343
|
'批量操作失败': str(e),
|
1348
|
-
'
|
1344
|
+
'事务模式': transaction_mode,
|
1349
1345
|
'处理方式': '整个批次回滚'
|
1350
1346
|
})
|
1351
1347
|
|
@@ -1382,26 +1378,13 @@ class MySQLUploader:
|
|
1382
1378
|
'数据类型': set_typ,
|
1383
1379
|
'是否排重': check_duplicate,
|
1384
1380
|
'排重列': duplicate_columns,
|
1385
|
-
'
|
1381
|
+
'事务模式': transaction_mode,
|
1386
1382
|
})
|
1387
1383
|
|
1388
1384
|
# 混合模式最后统一提交
|
1389
1385
|
if transaction_mode == 'hybrid':
|
1390
1386
|
conn.commit()
|
1391
1387
|
|
1392
|
-
logger.debug(sys._getframe().f_code.co_name, {
|
1393
|
-
'库': db_name,
|
1394
|
-
'表': table_name,
|
1395
|
-
'批次': batch_id,
|
1396
|
-
'批次处理完成': batch_index // len(batch) + 1,
|
1397
|
-
'总批次': (total_data_length + len(batch) - 1) // len(batch),
|
1398
|
-
'数据量': len(batch),
|
1399
|
-
'插入': batch_inserted,
|
1400
|
-
'跳过': batch_skipped,
|
1401
|
-
'失败': batch_failed,
|
1402
|
-
'事务提交模式': transaction_mode,
|
1403
|
-
})
|
1404
|
-
|
1405
1388
|
return batch_inserted, batch_skipped, batch_failed
|
1406
1389
|
|
1407
1390
|
def _process_single_row(
|
@@ -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=51aaiJO4QmLmJb4fxtT4uQtl5MznQsVENkLEBRAcEBc,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
|
@@ -12,7 +12,7 @@ mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
|
12
12
|
mdbq/mysql/deduplicator.py,sha256=brhX3eyE8-kn3nAYweKfBbAkXiNcyw_pL4CTyPqmPBg,21983
|
13
13
|
mdbq/mysql/mysql.py,sha256=Fzaqbjg5g3HdNl50jInIrdurdzcgR2CCzdKLVImD1-Q,55339
|
14
14
|
mdbq/mysql/s_query.py,sha256=X055aLRAgxVvueXx4NbfNjp6MyBI02_XBb1pTKw09L0,8660
|
15
|
-
mdbq/mysql/uploader.py,sha256=
|
15
|
+
mdbq/mysql/uploader.py,sha256=mQUcOFOuw1BeeJpPX1seDSKtJXuTzAG75GA8oQNWMT8,61195
|
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=YyPWa_nOH1zs8wgTDcgzn5w8szGKWPyWzmWMVIPkFnU,21638
|
28
|
-
mdbq-3.10.
|
29
|
-
mdbq-3.10.
|
30
|
-
mdbq-3.10.
|
31
|
-
mdbq-3.10.
|
28
|
+
mdbq-3.10.5.dist-info/METADATA,sha256=I0ojjsBkeW8KpaITA6ImuAvlJt3dONcmuJzRpLNkWqU,364
|
29
|
+
mdbq-3.10.5.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
30
|
+
mdbq-3.10.5.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
31
|
+
mdbq-3.10.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|