mdbq 4.2.6__py3-none-any.whl → 4.2.7__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.6'
1
+ VERSION = '4.2.7'
mdbq/mysql/uploader.py CHANGED
@@ -770,8 +770,7 @@ class TableManager:
770
770
  except Exception as e:
771
771
  raise ValueError(f"无效的日期值: {date_value}, 错误: {str(e)}")
772
772
 
773
- @staticmethod
774
- def _sanitize_identifier(identifier: str) -> str:
773
+ def _sanitize_identifier(self, identifier: str) -> str:
775
774
  """清理标识符"""
776
775
  if not identifier or not isinstance(identifier, str):
777
776
  raise ValueError(f"无效的标识符: {identifier}")
@@ -783,18 +782,16 @@ class TableManager:
783
782
  if not cleaned:
784
783
  raise ValueError(f"标识符清理后为空: {identifier}")
785
784
 
786
- # 检查MySQL关键字
787
- mysql_keywords = {
788
- 'select', 'insert', 'update', 'delete', 'from', 'where', 'and', 'or',
789
- 'not', 'like', 'in', 'is', 'null', 'true', 'false', 'between'
790
- }
785
+ # # 检查MySQL关键字
786
+ # mysql_keywords = {
787
+ # 'select', 'insert', 'update', 'delete', 'from', 'where', 'and', 'or',
788
+ # 'not', 'like', 'in', 'is', 'null', 'true', 'false', 'between'
789
+ # }
791
790
 
792
791
  if len(cleaned) > 64:
793
792
  cleaned = cleaned[:64]
794
793
 
795
- if cleaned.lower() in mysql_keywords:
796
- return f"`{cleaned}`"
797
-
794
+ # 不在这里添加反引号,让调用者决定是否需要
798
795
  return cleaned
799
796
 
800
797
 
@@ -918,8 +915,9 @@ class DataProcessor:
918
915
  class DataInserter:
919
916
  """数据插入器"""
920
917
 
921
- def __init__(self, connection_manager: DatabaseConnectionManager):
918
+ def __init__(self, connection_manager: DatabaseConnectionManager, table_manager: TableManager = None):
922
919
  self.conn_mgr = connection_manager
920
+ self.table_mgr = table_manager
923
921
 
924
922
  def insert_data(self, db_name: str, table_name: str, data: List[Dict],
925
923
  set_typ: Dict[str, str], update_on_duplicate: bool = False) -> Tuple[int, int, int]:
@@ -929,7 +927,7 @@ class DataInserter:
929
927
 
930
928
  # 准备SQL语句(排除系统列)
931
929
  columns = [col for col in set_typ.keys() if col.lower() not in ['id', 'create_at', 'update_at']]
932
- safe_columns = [TableManager._sanitize_identifier(col) for col in columns]
930
+ safe_columns = [self.table_mgr._sanitize_identifier(col) if self.table_mgr else col for col in columns]
933
931
  placeholders = ','.join(['%s'] * len(columns))
934
932
 
935
933
  sql = f"""
@@ -1098,7 +1096,7 @@ class MySQLUploader:
1098
1096
  # 初始化组件
1099
1097
  self.conn_mgr = DatabaseConnectionManager(self.config)
1100
1098
  self.table_mgr = TableManager(self.conn_mgr, collation)
1101
- self.data_inserter = DataInserter(self.conn_mgr)
1099
+ self.data_inserter = DataInserter(self.conn_mgr, self.table_mgr)
1102
1100
 
1103
1101
  @retry_on_failure(max_retries=3)
1104
1102
  def upload_data(self, db_name: str, table_name: str,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.2.6
3
+ Version: 4.2.7
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=eHkRYCKowQZZAyCEcs2YyfHaFElV0-K-CqgZQLCnbA0,17
2
+ mdbq/__version__.py,sha256=I8-tbHcxdJ3RUU4D8QvnkhU-PpmlJqdy6uSpIhJq3Jg,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=8g1PkhNhfvZQnE8h6SNDwb0Uiwfn5JkQqy9Sxy21tBw,64358
18
+ mdbq/mysql/uploader.py,sha256=G2TMm9pzE1zDF8Q8F920hkq7okUJqHqTGphxF4fs-fo,64458
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.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,,
38
+ mdbq-4.2.7.dist-info/METADATA,sha256=4zuTK3opKDmN8m4Dlg57hi-IHqH8VFhMNuy8-DLOPrc,363
39
+ mdbq-4.2.7.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
40
+ mdbq-4.2.7.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
41
+ mdbq-4.2.7.dist-info/RECORD,,
File without changes