mdbq 4.0.41__tar.gz → 4.0.42__tar.gz
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-4.0.41 → mdbq-4.0.42}/PKG-INFO +1 -1
- mdbq-4.0.42/mdbq/__version__.py +1 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/mysql/uploader.py +66 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq.egg-info/PKG-INFO +1 -1
- mdbq-4.0.41/mdbq/__version__.py +0 -1
- {mdbq-4.0.41 → mdbq-4.0.42}/README.txt +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/aggregation/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/aggregation/query_data.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/log/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/log/mylogger.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/myconf/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/myconf/myconf.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/mysql/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/mysql/deduplicator.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/mysql/mysql.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/mysql/s_query.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/mysql/unique_.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/other/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/other/download_sku_picture.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/other/error_handler.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/other/otk.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/other/pov_city.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/other/ua_sj.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/pbix/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/pbix/pbix_refresh.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/pbix/refresh_all.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/redis/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/redis/getredis.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/spider/__init__.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq/spider/aikucun.py +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq.egg-info/SOURCES.txt +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq.egg-info/dependency_links.txt +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/mdbq.egg-info/top_level.txt +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/setup.cfg +0 -0
- {mdbq-4.0.41 → mdbq-4.0.42}/setup.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
VERSION = '4.0.42'
|
@@ -516,6 +516,18 @@ class MySQLUploader:
|
|
516
516
|
:return: 标准化后的日期时间字符串或日期对象
|
517
517
|
:raises ValueError: 当日期格式无效时抛出
|
518
518
|
"""
|
519
|
+
# 处理 pandas Timestamp 对象
|
520
|
+
if hasattr(value, 'strftime'):
|
521
|
+
# 如果是 Timestamp 或 datetime 对象,直接格式化
|
522
|
+
if date_type:
|
523
|
+
return pd.to_datetime(value.strftime('%Y-%m-%d'))
|
524
|
+
else:
|
525
|
+
return value.strftime('%Y-%m-%d %H:%M:%S')
|
526
|
+
|
527
|
+
# 确保 value 是字符串
|
528
|
+
if not isinstance(value, str):
|
529
|
+
value = str(value)
|
530
|
+
|
519
531
|
formats = [
|
520
532
|
'%Y-%m-%d %H:%M:%S',
|
521
533
|
'%Y-%m-%d',
|
@@ -564,6 +576,24 @@ class MySQLUploader:
|
|
564
576
|
# 数值类型验证
|
565
577
|
elif 'int' in column_type_lower:
|
566
578
|
try:
|
579
|
+
# 安全地处理各种数值类型
|
580
|
+
if hasattr(value, 'item') and callable(getattr(value, 'item', None)):
|
581
|
+
# numpy 标量类型
|
582
|
+
try:
|
583
|
+
value = value.item()
|
584
|
+
except (ValueError, TypeError):
|
585
|
+
# 如果不是标量,保持原值
|
586
|
+
pass
|
587
|
+
elif hasattr(value, 'value') and not isinstance(value, str):
|
588
|
+
# pandas 或其他有 value 属性的对象
|
589
|
+
try:
|
590
|
+
extracted_value = value.value
|
591
|
+
# 验证提取的值是数值类型
|
592
|
+
if isinstance(extracted_value, (int, float, str)) and str(extracted_value).replace('.', '').replace('-', '').isdigit():
|
593
|
+
value = extracted_value
|
594
|
+
except (ValueError, TypeError, AttributeError):
|
595
|
+
# 如果提取失败,保持原值
|
596
|
+
pass
|
567
597
|
return int(value)
|
568
598
|
except (ValueError, TypeError):
|
569
599
|
logger.error(f"值 `{value}` 无法转换为整数", {"库": db_name, "表": table_name, "列": col_name})
|
@@ -587,12 +617,48 @@ class MySQLUploader:
|
|
587
617
|
# 检查是否为Decimal类型
|
588
618
|
if 'decimal' in column_type_lower:
|
589
619
|
precision, scale = self._get_decimal_scale(column_type)
|
620
|
+
# 安全地处理各种数值类型
|
621
|
+
if hasattr(value, 'item') and callable(getattr(value, 'item', None)):
|
622
|
+
# numpy 标量类型
|
623
|
+
try:
|
624
|
+
value = value.item()
|
625
|
+
except (ValueError, TypeError):
|
626
|
+
# 如果不是标量,保持原值
|
627
|
+
pass
|
628
|
+
elif hasattr(value, 'value') and not isinstance(value, str):
|
629
|
+
# pandas 或其他有 value 属性的对象
|
630
|
+
try:
|
631
|
+
extracted_value = value.value
|
632
|
+
# 验证提取的值是数值类型
|
633
|
+
if isinstance(extracted_value, (int, float, str)) and str(extracted_value).replace('.', '').replace('-', '').replace('e', '').replace('E', '').isdigit():
|
634
|
+
value = extracted_value
|
635
|
+
except (ValueError, TypeError, AttributeError):
|
636
|
+
# 如果提取失败,保持原值
|
637
|
+
pass
|
590
638
|
value_decimal = Decimal(str(value))
|
591
639
|
# 检查整数部分长度
|
592
640
|
if len(value_decimal.as_tuple().digits) - abs(value_decimal.as_tuple().exponent) > precision - scale:
|
593
641
|
raise ValueError(f"整数部分超出范围")
|
594
642
|
return value_decimal
|
595
643
|
else: # float/double
|
644
|
+
# 安全地处理各种数值类型
|
645
|
+
if hasattr(value, 'item') and callable(getattr(value, 'item', None)):
|
646
|
+
# numpy 标量类型
|
647
|
+
try:
|
648
|
+
value = value.item()
|
649
|
+
except (ValueError, TypeError):
|
650
|
+
# 如果不是标量,保持原值
|
651
|
+
pass
|
652
|
+
elif hasattr(value, 'value') and not isinstance(value, str):
|
653
|
+
# pandas 或其他有 value 属性的对象
|
654
|
+
try:
|
655
|
+
extracted_value = value.value
|
656
|
+
# 验证提取的值是数值类型
|
657
|
+
if isinstance(extracted_value, (int, float, str)) and str(extracted_value).replace('.', '').replace('-', '').replace('e', '').replace('E', '').isdigit():
|
658
|
+
value = extracted_value
|
659
|
+
except (ValueError, TypeError, AttributeError):
|
660
|
+
# 如果提取失败,保持原值
|
661
|
+
pass
|
596
662
|
return float(value)
|
597
663
|
except (ValueError, TypeError, InvalidOperation) as e:
|
598
664
|
logger.error(f"值 `{value}` 无法转换为数值类型: {e}", {"库": db_name, "表": table_name, "列": col_name})
|
mdbq-4.0.41/mdbq/__version__.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
VERSION = '4.0.41'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|