mdbq 4.2.4__tar.gz → 4.2.6__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.
Potentially problematic release.
This version of mdbq might be problematic. Click here for more details.
- {mdbq-4.2.4 → mdbq-4.2.6}/PKG-INFO +2 -2
- mdbq-4.2.6/mdbq/__version__.py +1 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/mysql/uploader.py +46 -3
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq.egg-info/PKG-INFO +2 -2
- mdbq-4.2.4/mdbq/__version__.py +0 -1
- {mdbq-4.2.4 → mdbq-4.2.6}/README.txt +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/auth/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/auth/auth_backend.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/auth/crypto.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/auth/rate_limiter.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/js/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/js/jc.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/log/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/log/mylogger.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/myconf/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/myconf/myconf.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/mysql/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/mysql/deduplicator.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/mysql/mysql.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/mysql/s_query.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/mysql/unique_.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/other/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/other/download_sku_picture.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/other/error_handler.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/other/otk.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/other/pov_city.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/other/ua_sj.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/pbix/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/pbix/pbix_refresh.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/pbix/refresh_all.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/redis/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/redis/getredis.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/redis/redis_cache.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/route/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/route/analytics.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/route/monitor.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/route/routes.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/selenium/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/selenium/get_driver.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq/spider/__init__.py +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq.egg-info/SOURCES.txt +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq.egg-info/dependency_links.txt +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/mdbq.egg-info/top_level.txt +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/setup.cfg +0 -0
- {mdbq-4.2.4 → mdbq-4.2.6}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = '4.2.6'
|
|
@@ -694,16 +694,48 @@ class TableManager:
|
|
|
694
694
|
# 主键定义(始终使用id作为主键)
|
|
695
695
|
primary_key_def = "PRIMARY KEY (`id`)"
|
|
696
696
|
|
|
697
|
-
# 唯一约束定义
|
|
697
|
+
# 唯一约束定义 - 使用前缀索引处理超长字段
|
|
698
698
|
unique_defs = []
|
|
699
699
|
if unique_keys:
|
|
700
700
|
for i, uk in enumerate(unique_keys):
|
|
701
701
|
# 过滤掉系统列
|
|
702
702
|
filtered_uk = [col for col in uk if col.lower() not in ['id', 'create_at', 'update_at']]
|
|
703
703
|
if filtered_uk:
|
|
704
|
-
|
|
704
|
+
# 先清理列名标识符,再应用前缀索引
|
|
705
|
+
safe_uk_parts = []
|
|
706
|
+
for col in filtered_uk:
|
|
707
|
+
safe_col_name = self._sanitize_identifier(col)
|
|
708
|
+
# 检查是否需要前缀索引
|
|
709
|
+
col_type = columns.get(col, 'varchar(255)').lower()
|
|
710
|
+
if 'varchar' in col_type:
|
|
711
|
+
# 提取varchar长度
|
|
712
|
+
match = re.search(r'varchar\((\d+)\)', col_type)
|
|
713
|
+
if match:
|
|
714
|
+
length = int(match.group(1))
|
|
715
|
+
# 如果varchar长度超过191字符,使用前缀索引
|
|
716
|
+
if length > 191:
|
|
717
|
+
prefix_length = 191
|
|
718
|
+
safe_uk_parts.append(f"`{safe_col_name}`({prefix_length})")
|
|
719
|
+
logger.debug('应用前缀索引', {
|
|
720
|
+
'列名': col,
|
|
721
|
+
'原始长度': length,
|
|
722
|
+
'前缀长度': prefix_length
|
|
723
|
+
})
|
|
724
|
+
else:
|
|
725
|
+
safe_uk_parts.append(f"`{safe_col_name}`")
|
|
726
|
+
else:
|
|
727
|
+
# 如果没有指定长度,默认使用前缀索引
|
|
728
|
+
safe_uk_parts.append(f"`{safe_col_name}`(191)")
|
|
729
|
+
logger.debug('应用默认前缀索引', {
|
|
730
|
+
'列名': col,
|
|
731
|
+
'前缀长度': 191
|
|
732
|
+
})
|
|
733
|
+
else:
|
|
734
|
+
# 非varchar字段保持原样
|
|
735
|
+
safe_uk_parts.append(f"`{safe_col_name}`")
|
|
736
|
+
|
|
705
737
|
unique_name = f"uniq_{i}"
|
|
706
|
-
unique_defs.append(f"UNIQUE KEY `{unique_name}` ({','.join(
|
|
738
|
+
unique_defs.append(f"UNIQUE KEY `{unique_name}` ({','.join(safe_uk_parts)})")
|
|
707
739
|
|
|
708
740
|
# 组合所有定义
|
|
709
741
|
all_defs = column_defs + [primary_key_def] + unique_defs
|
|
@@ -764,6 +796,8 @@ class TableManager:
|
|
|
764
796
|
return f"`{cleaned}`"
|
|
765
797
|
|
|
766
798
|
return cleaned
|
|
799
|
+
|
|
800
|
+
|
|
767
801
|
|
|
768
802
|
|
|
769
803
|
class DataProcessor:
|
|
@@ -1094,6 +1128,15 @@ class MySQLUploader:
|
|
|
1094
1128
|
:param unique_keys: 唯一约束列表(无需包含系统列)
|
|
1095
1129
|
:return: 上传结果详情
|
|
1096
1130
|
"""
|
|
1131
|
+
if db_name is None or table_name is None:
|
|
1132
|
+
logger.error('数据库名或表名不能为空', {'db_name': db_name, 'table_name': table_name})
|
|
1133
|
+
return {
|
|
1134
|
+
'success': False,
|
|
1135
|
+
'inserted_rows': 0,
|
|
1136
|
+
'skipped_rows': 0,
|
|
1137
|
+
'failed_rows': 0,
|
|
1138
|
+
'tables_created': []
|
|
1139
|
+
}
|
|
1097
1140
|
db_name = db_name.lower()
|
|
1098
1141
|
table_name = table_name.lower()
|
|
1099
1142
|
|
mdbq-4.2.4/mdbq/__version__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
VERSION = '4.2.4'
|
|
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
|
|
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
|