mdbq 3.9.10__py3-none-any.whl → 3.9.12__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/mysql/uploader.py CHANGED
@@ -351,16 +351,24 @@ class MySQLUploader:
351
351
  :raises ValueError: 如果日期格式无效或分表方式无效
352
352
  """
353
353
  try:
354
- # date_obj = datetime.datetime.strptime(date_value, '%Y-%m-%d %H:%M:%S')
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
- try:
358
- # date_obj = datetime.datetime.strptime(date_value, '%Y-%m-%d')
359
- date_obj = self._validate_datetime(date_value, True)
360
- except ValueError:
361
- error_msg = f"无效的日期格式1: {date_value}"
362
- logger.error(error_msg)
363
- raise ValueError(error_msg)
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}"
@@ -600,15 +608,14 @@ class MySQLUploader:
600
608
  column_type_lower = column_type.lower()
601
609
 
602
610
  # 处理百分比值
603
- if isinstance(value, str):
604
- if value.endswith('%'):
605
- try:
606
- # 移除百分号并转换为小数
607
- percent_value = float(value.strip().replace('%', ''))
608
- decimal_value = percent_value / 100
609
- return decimal_value
610
- except ValueError:
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 '日期' in column_type_lower or 'time' in column_type_lower:
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
- # if not set_typ:
950
- # error_msg = "列的数据类型缺失"
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
  ]
@@ -1310,5 +1315,25 @@ def main():
1310
1315
  uploader.close()
1311
1316
 
1312
1317
 
1318
+ def test():
1319
+ uploader = MySQLUploader(username='root', password='188988yang188', host='localhost')
1320
+
1321
+ # 测试按月分表
1322
+ table_name = uploader._get_partition_table_name(
1323
+ table_name='test_table',
1324
+ date_value='2025-01-15',
1325
+ partition_by='month'
1326
+ )
1327
+ print(table_name) # 输出: test_table_2025-01
1328
+
1329
+ # 测试按年分表
1330
+ table_name = uploader._get_partition_table_name(
1331
+ table_name='test_table',
1332
+ date_value='2025-01-15',
1333
+ partition_by='year'
1334
+ )
1335
+ print(table_name) # 输出: test_table_2025
1336
+
1337
+
1313
1338
  if __name__ == '__main__':
1314
- main()
1339
+ test()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 3.9.10
3
+ Version: 3.9.12
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=83jYP6xnYylgp029cctX2BP7k_exd-phUiwATgIjhH0,18
2
+ mdbq/__version__.py,sha256=OR3dWHQidbCP1TUcpS6TXR3qOZQ4mSJVjcHuaGUGPDc,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=jTcizvUtRdwMhWK2i_LA9yDPmcifLjUzVhwTbC3wfJk,119785
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=V23PAzT59lMUqijkUiwV6a1qNwk9T76k8HKxY8fYW9w,52140
15
+ mdbq/mysql/uploader.py,sha256=JGkQYx36uLTBTXqQEDGnDiOzePawTF5XWVXjl3-uKNI,52985
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.10.dist-info/METADATA,sha256=Ln51lgeqZn0zAjgLUKXaMNJ5ZXCkX3Eyu0iao37_IQw,364
29
- mdbq-3.9.10.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
30
- mdbq-3.9.10.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
31
- mdbq-3.9.10.dist-info/RECORD,,
28
+ mdbq-3.9.12.dist-info/METADATA,sha256=nyuDxrQTOnWTgU_kOlvhp3h-2pFVRwHKx5c2PtNEIJQ,364
29
+ mdbq-3.9.12.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
30
+ mdbq-3.9.12.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
31
+ mdbq-3.9.12.dist-info/RECORD,,
File without changes