mdbq 4.2.5__py3-none-any.whl → 4.2.6__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.

Potentially problematic release.


This version of mdbq might be problematic. Click here for more details.

mdbq/__version__.py CHANGED
@@ -1 +1 @@
1
- VERSION = '4.2.5'
1
+ VERSION = '4.2.6'
mdbq/mysql/uploader.py CHANGED
@@ -701,11 +701,41 @@ class TableManager:
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
- # 使用前缀索引处理超长字段
705
- optimized_uk = self._apply_prefix_index_to_columns(filtered_uk, columns)
706
- safe_uk = [f"`{self._sanitize_identifier(col)}`" for col in optimized_uk]
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
+
707
737
  unique_name = f"uniq_{i}"
708
- unique_defs.append(f"UNIQUE KEY `{unique_name}` ({','.join(safe_uk)})")
738
+ unique_defs.append(f"UNIQUE KEY `{unique_name}` ({','.join(safe_uk_parts)})")
709
739
 
710
740
  # 组合所有定义
711
741
  all_defs = column_defs + [primary_key_def] + unique_defs
@@ -767,49 +797,7 @@ class TableManager:
767
797
 
768
798
  return cleaned
769
799
 
770
- def _apply_prefix_index_to_columns(self, columns: List[str], column_definitions: Dict[str, str]) -> List[str]:
771
- """
772
- 为超长的varchar字段应用前缀索引,防止索引键长度超限
773
-
774
- :param columns: 列名列表
775
- :param column_definitions: 列定义字典
776
- :return: 应用前缀索引后的列名列表
777
- """
778
- optimized_columns = []
779
-
780
- for col in columns:
781
- col_type = column_definitions.get(col, 'varchar(255)').lower()
782
-
783
- # 只对varchar字段应用前缀索引
784
- if 'varchar' in col_type:
785
- # 提取varchar长度
786
- match = re.search(r'varchar\((\d+)\)', col_type)
787
- if match:
788
- length = int(match.group(1))
789
- # 如果varchar长度超过191字符,使用前缀索引
790
- # 191 * 4 = 764字节,在3072字节限制内比较安全
791
- if length > 191:
792
- prefix_length = 191 # 使用191字符作为前缀
793
- optimized_columns.append(f"{col}({prefix_length})")
794
- logger.info('应用前缀索引', {
795
- '列名': col,
796
- '原始长度': length,
797
- '前缀长度': prefix_length
798
- })
799
- else:
800
- optimized_columns.append(col)
801
- else:
802
- # 如果没有指定长度,默认使用前缀索引
803
- optimized_columns.append(f"{col}(191)")
804
- logger.info('应用默认前缀索引', {
805
- '列名': col,
806
- '前缀长度': 191
807
- })
808
- else:
809
- # 非varchar字段保持原样
810
- optimized_columns.append(col)
811
-
812
- return optimized_columns
800
+
813
801
 
814
802
 
815
803
  class DataProcessor:
@@ -1140,6 +1128,15 @@ class MySQLUploader:
1140
1128
  :param unique_keys: 唯一约束列表(无需包含系统列)
1141
1129
  :return: 上传结果详情
1142
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
+ }
1143
1140
  db_name = db_name.lower()
1144
1141
  table_name = table_name.lower()
1145
1142
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.2.5
3
+ Version: 4.2.6
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=O8I4iS-A5rEXojiLoZEoXrZC2HnbV02V4QULmZcdrdo,17
2
+ mdbq/__version__.py,sha256=eHkRYCKowQZZAyCEcs2YyfHaFElV0-K-CqgZQLCnbA0,17
3
3
  mdbq/auth/__init__.py,sha256=pnPMAt63sh1B6kEvmutUuro46zVf2v2YDAG7q-jV_To,24
4
4
  mdbq/auth/auth_backend.py,sha256=iLN7AqiSq7fQgFtNtge_TIlVOR1hrCSZXH6oId6uGX4,116924
5
5
  mdbq/auth/crypto.py,sha256=fcZRFCnrKVVdWDUx_zds51ynFYwS9DBvJOrRQVldrfM,15931
@@ -15,7 +15,7 @@ mdbq/mysql/deduplicator.py,sha256=VGRBcIEsWUqQovkGpGCOittSW1l5fuMpiNWLbiOA5tI,72
15
15
  mdbq/mysql/mysql.py,sha256=eSrEE6DdS3GJ_EPPSggEZXhnVz6IqHPwUSsWfZJVFkY,57081
16
16
  mdbq/mysql/s_query.py,sha256=rCJZ0XPalwk3Z7HkqsvF9o0UX0sZT4Wk1JXryRrV6yQ,50472
17
17
  mdbq/mysql/unique_.py,sha256=MaztT-WIyEQUs-OOYY4pFulgHVcXR1BfCy3QUz0XM_U,21127
18
- mdbq/mysql/uploader.py,sha256=gvxYjkqNReuSN0jsORsvXBYtAp3ClKK7Uyvpo9Ei2bA,64223
18
+ mdbq/mysql/uploader.py,sha256=8g1PkhNhfvZQnE8h6SNDwb0Uiwfn5JkQqy9Sxy21tBw,64358
19
19
  mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
20
20
  mdbq/other/download_sku_picture.py,sha256=pxcoNYoTP5KAhyvyHO2NQIrfhige5UN-LuB9Z8Iw3g8,45017
21
21
  mdbq/other/error_handler.py,sha256=4p5haAXSY-P78stp4Xwo_MwAngWYqyKj5ogWIuYXMeY,12631
@@ -35,7 +35,7 @@ mdbq/route/routes.py,sha256=QVGfTvDgu0CpcKCvk1ra74H8uojgqTLUav1fnVAqLEA,29433
35
35
  mdbq/selenium/__init__.py,sha256=AKzeEceqZyvqn2dEDoJSzDQnbuENkJSHAlbHAD0u0ZI,10
36
36
  mdbq/selenium/get_driver.py,sha256=1NTlVUE6QsyjTrVVVqTO2LOnYf578ccFWlWnvIXGtic,20903
37
37
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
38
- mdbq-4.2.5.dist-info/METADATA,sha256=FaKLKKE30RZpI0oYAGc-ZXqMnYgDT_lluuJj2IB77xw,363
39
- mdbq-4.2.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
40
- mdbq-4.2.5.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
41
- mdbq-4.2.5.dist-info/RECORD,,
38
+ mdbq-4.2.6.dist-info/METADATA,sha256=--nndNMQv1CLlqJU7mkPvb6VNFj8DPFa5NmvkEK1MkY,363
39
+ mdbq-4.2.6.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
40
+ mdbq-4.2.6.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
41
+ mdbq-4.2.6.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