mdbq 4.0.77__py3-none-any.whl → 4.0.79__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.77'
1
+ VERSION = '4.0.79'
mdbq/log/mylogger.py CHANGED
@@ -429,7 +429,7 @@ class MyLogger:
429
429
  frame = inspect.currentframe()
430
430
  # 跳过logger内部函数,找到真正的调用者
431
431
  caller_frame = frame.f_back
432
- skip_functions = ['_sync_log', 'log', 'debug', 'info', 'warning', 'error', 'critical', 'wrapper']
432
+ skip_functions = ['_sync_log', 'log', 'debug', 'info', 'warning', 'error', 'critical', 'wrapper', 'log_error_handler', 'decorator']
433
433
  while caller_frame and caller_frame.f_code.co_name in skip_functions:
434
434
  caller_frame = caller_frame.f_back
435
435
  if caller_frame:
mdbq/mysql/uploader.py CHANGED
@@ -11,7 +11,6 @@ from mdbq.log import mylogger
11
11
  from mdbq.myconf import myconf
12
12
  from typing import Union, List, Dict, Optional, Any, Tuple, Set
13
13
  from dbutils.pooled_db import PooledDB
14
- import sys
15
14
  from decimal import Decimal, InvalidOperation
16
15
  import math
17
16
  import json
@@ -986,7 +985,6 @@ class MySQLUploader:
986
985
  logger.error('数据表不存在', {
987
986
  '库': db_name,
988
987
  '表': table_name,
989
- 'func': sys._getframe().f_code.co_name,
990
988
  })
991
989
  raise ValueError(f"数据表不存在: `{db_name}`.`{table_name}`")
992
990
  if table_existed and unique_keys:
@@ -1019,7 +1017,6 @@ class MySQLUploader:
1019
1017
  '库': db_name,
1020
1018
  '表': table_name,
1021
1019
  '列': self._shorten_for_log(table_columns),
1022
- 'func': sys._getframe().f_code.co_name,
1023
1020
  })
1024
1021
  raise ValueError(f"获取列失败 `{db_name}`.`{table_name}`")
1025
1022
  for col in set_typ:
@@ -1028,7 +1025,6 @@ class MySQLUploader:
1028
1025
  '库': db_name,
1029
1026
  '表': table_name,
1030
1027
  '列': col,
1031
- 'func': sys._getframe().f_code.co_name,
1032
1028
  })
1033
1029
  raise ValueError(f"列不存在: `{col}` -> `{db_name}`.`{table_name}`")
1034
1030
  if date_column and date_column in table_columns:
@@ -1151,7 +1147,6 @@ class MySQLUploader:
1151
1147
  logger.error('数据转字典时发生错误', {
1152
1148
  'error': str(e),
1153
1149
  'data': self._shorten_for_log(data),
1154
- 'func': sys._getframe().f_code.co_name,
1155
1150
  })
1156
1151
  raise ValueError(f"数据转字典时发生错误: {e}")
1157
1152
  elif isinstance(data, dict):
@@ -1167,7 +1162,6 @@ class MySQLUploader:
1167
1162
  else:
1168
1163
  logger.error('数据结构必须是字典、列表、字典列表或dataframe', {
1169
1164
  'data': self._shorten_for_log(data),
1170
- 'func': sys._getframe().f_code.co_name,
1171
1165
  })
1172
1166
  raise ValueError("数据结构必须是字典、列表、字典列表或dataframe")
1173
1167
 
@@ -1175,9 +1169,7 @@ class MySQLUploader:
1175
1169
  data = self.normalize_column_names(data)
1176
1170
 
1177
1171
  if not set_typ:
1178
- logger.warning('set_typ为空, 将自动推断数据类型, 可能存在数据类型识别错误', {
1179
- 'func': sys._getframe().f_code.co_name,
1180
- })
1172
+ logger.warning('set_typ为空, 将自动推断数据类型, 可能存在数据类型识别错误')
1181
1173
  # set_typ的键清洗
1182
1174
  if not set_typ:
1183
1175
  set_typ = {}
@@ -1227,7 +1219,6 @@ class MySQLUploader:
1227
1219
  '行': row_idx,
1228
1220
  '报错': str(e),
1229
1221
  'row': self._shorten_for_log(row),
1230
- 'func': sys._getframe().f_code.co_name,
1231
1222
  })
1232
1223
  raise ValueError(f"行:{row_idx}, 列:`{col_name}`-> 报错: {str(e)}")
1233
1224
  prepared_data.append(prepared_row)
@@ -1318,6 +1309,14 @@ class MySQLUploader:
1318
1309
  - 如需"跳过"行为,设置 update_on_duplicate=False 即可。
1319
1310
  """
1320
1311
  # upload_start = time.time()
1312
+ # 检查data参数是否为None
1313
+ if data is None:
1314
+ logger.error('data参数不能为None', {
1315
+ '库': db_name,
1316
+ '表': table_name,
1317
+ })
1318
+ raise ValueError("data参数不能为None,请传入有效的数据")
1319
+
1321
1320
  if isinstance(data, list) or (hasattr(data, 'shape') and hasattr(data, '__len__')):
1322
1321
  initial_row_count = len(data)
1323
1322
  else:
@@ -1374,7 +1373,6 @@ class MySQLUploader:
1374
1373
  '表': table_name,
1375
1374
  '批次': batch_id,
1376
1375
  '分表方式': partition_by,
1377
- 'func': sys._getframe().f_code.co_name,
1378
1376
  })
1379
1377
  raise ValueError("分表方式必须是 'year' 或 'month' 或 'None'")
1380
1378
 
@@ -1388,7 +1386,6 @@ class MySQLUploader:
1388
1386
  else:
1389
1387
  logger.error('数据库不存在', {
1390
1388
  '库': db_name,
1391
- 'func': sys._getframe().f_code.co_name,
1392
1389
  })
1393
1390
  raise ValueError(f"数据库不存在: `{db_name}`")
1394
1391
 
@@ -1404,7 +1401,6 @@ class MySQLUploader:
1404
1401
  '批次': batch_id,
1405
1402
  '缺失列': partition_date_column,
1406
1403
  'row': self._shorten_for_log(row),
1407
- 'func': sys._getframe().f_code.co_name,
1408
1404
  })
1409
1405
  dropped_rows += 1
1410
1406
  continue
@@ -1422,7 +1418,6 @@ class MySQLUploader:
1422
1418
  '表': table_name,
1423
1419
  'row_data': self._shorten_for_log(row),
1424
1420
  'error': str(e),
1425
- 'func': sys._getframe().f_code.co_name,
1426
1421
  })
1427
1422
  dropped_rows += 1
1428
1423
  continue
@@ -1455,7 +1450,6 @@ class MySQLUploader:
1455
1450
  '分表': part_table,
1456
1451
  'error': str(e),
1457
1452
  '数据样例': self._shorten_for_log(part_data, 2),
1458
- 'func': sys._getframe().f_code.co_name,
1459
1453
  })
1460
1454
  continue # 跳过当前分表,继续处理其他分表
1461
1455
  else:
@@ -1485,7 +1479,6 @@ class MySQLUploader:
1485
1479
  'error': str(e),
1486
1480
  'error_type': type(e).__name__,
1487
1481
  '数据样例': self._shorten_for_log(data, 2),
1488
- 'func': sys._getframe().f_code.co_name,
1489
1482
  })
1490
1483
  return False
1491
1484
  finally:
@@ -1574,7 +1567,6 @@ class MySQLUploader:
1574
1567
  '错误值': mode,
1575
1568
  '可选值': valid_modes,
1576
1569
  '自动使用默认模式': 'batch',
1577
- 'func': sys._getframe().f_code.co_name,
1578
1570
  })
1579
1571
  return 'batch'
1580
1572
  return mode.lower()
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.0.77
3
+ Version: 4.0.79
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,7 +1,7 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=MKsKQWqJcKq5Yl-a7LzywayYm1KeeUGRyTEqu3Itasg,18
2
+ mdbq/__version__.py,sha256=TUQGZsFvLtoaEefLSX7COyEWcNLBJegEUwD7lrcNiwo,18
3
3
  mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
4
- mdbq/log/mylogger.py,sha256=rJozMRqbO277M8DVwQZVDLUj3eBRCn0MBg29QVlrcog,26384
4
+ mdbq/log/mylogger.py,sha256=DyBftCMNLe1pTTXsa830pUtDISJxpJHFIradYtE3lFA,26418
5
5
  mdbq/myconf/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
6
6
  mdbq/myconf/myconf.py,sha256=rHvQCnQRKhQ49AZBke-Z4v28hyOLmHt4MylIuB0H6yA,33516
7
7
  mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
@@ -9,7 +9,7 @@ mdbq/mysql/deduplicator.py,sha256=AB3gL7ZwhcmzGHSu4UY4M6YZVPFZ2wlAN3BCcwAhegQ,73
9
9
  mdbq/mysql/mysql.py,sha256=pDg771xBugCMSTWeskIFTi3pFLgaqgyG3smzf-86Wn8,56772
10
10
  mdbq/mysql/s_query.py,sha256=nwhyqbxq-V0sGUJbdjiUDEwjpDxiKrzG0PjV6wkrWU4,50474
11
11
  mdbq/mysql/unique_.py,sha256=MaztT-WIyEQUs-OOYY4pFulgHVcXR1BfCy3QUz0XM_U,21127
12
- mdbq/mysql/uploader.py,sha256=68kJIrCnP2dJZ6ilb8MoFzuzGGWU_272WwPfaqt075A,112125
12
+ mdbq/mysql/uploader.py,sha256=xodmN3f5pT1T2yJu01ckgYb_THE__rm81kgNJfqtinc,111530
13
13
  mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
14
14
  mdbq/other/download_sku_picture.py,sha256=X66sVdvVgzoNzmgVJyPtd7bjEvctEKtLPblEPF65EWc,46940
15
15
  mdbq/other/error_handler.py,sha256=4p5haAXSY-P78stp4Xwo_MwAngWYqyKj5ogWIuYXMeY,12631
@@ -24,7 +24,7 @@ mdbq/redis/getredis.py,sha256=vpBuNc22uj9Vr-_Dh25_wpwWM1e-072EAAIBdB_IpL0,23494
24
24
  mdbq/selenium/__init__.py,sha256=AKzeEceqZyvqn2dEDoJSzDQnbuENkJSHAlbHAD0u0ZI,10
25
25
  mdbq/selenium/get_driver.py,sha256=sJYMfkzNprGoHYkppVqxglRSIQm6mO7wvgYvSzTWHdc,20903
26
26
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
27
- mdbq-4.0.77.dist-info/METADATA,sha256=NJeHEofQkdsgkO9rQhyEm4uj_w1MEsnJJJh8U2oTwco,364
28
- mdbq-4.0.77.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
- mdbq-4.0.77.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
30
- mdbq-4.0.77.dist-info/RECORD,,
27
+ mdbq-4.0.79.dist-info/METADATA,sha256=eWEp7ErX6P8yHpeA8_6SLyUccMHT7rLN1th9HrNQ1ag,364
28
+ mdbq-4.0.79.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
29
+ mdbq-4.0.79.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
30
+ mdbq-4.0.79.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5