mdbq 3.8.1__py3-none-any.whl → 3.8.3__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/__version__.py CHANGED
@@ -1,3 +1 @@
1
- VERSION = (0, 3, 6)
2
-
3
- __version__ = '.'.join(map(str, VERSION))
1
+ VERSION = '3.8.3'
@@ -468,7 +468,7 @@ class MysqlDatasQuery:
468
468
  '店铺名称': 1,
469
469
  }
470
470
  __res = []
471
- for year in range(2024, datetime.datetime.today().year+1):
471
+ for year in range(2025, datetime.datetime.today().year+1):
472
472
  df = self.download.data_to_df(
473
473
  db_name='推广数据_圣积天猫店',
474
474
  table_name=f'主体报表_{year}',
@@ -2459,6 +2459,7 @@ class MysqlDatasQuery:
2459
2459
  df_tm_living = pd.DataFrame() # 天猫超级直播
2460
2460
  df_jd = pd.DataFrame() # 京东推广
2461
2461
  df_jd_qzyx = pd.DataFrame() # 京东全站推广
2462
+ df_jd_ziying = pd.DataFrame() # 京东推广
2462
2463
 
2463
2464
  start_date, end_date = self.months_data(num=self.months)
2464
2465
  projection = {
@@ -2525,7 +2526,7 @@ class MysqlDatasQuery:
2525
2526
  )
2526
2527
  # sj圣积
2527
2528
  __res = []
2528
- for year in range(2024, datetime.datetime.today().year + 1):
2529
+ for year in range(2025, datetime.datetime.today().year + 1):
2529
2530
  df_sj = self.download.data_to_df(
2530
2531
  db_name='推广数据_圣积天猫店',
2531
2532
  table_name=f'营销场景报表_{year}',
@@ -2783,7 +2784,52 @@ class MysqlDatasQuery:
2783
2784
  df_jd_qzyx = df_jd_qzyx[['日期', '店铺名称', '营销场景', '花费', '展现量', '点击量', '成交笔数', '成交金额']]
2784
2785
  df_jd_qzyx = df_jd_qzyx[df_jd_qzyx['花费'] > 0]
2785
2786
 
2786
- _datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_al, df_sj, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
2787
+ projection = {
2788
+ '日期': 1,
2789
+ '产品线': 1,
2790
+ '触发sku_id': 1,
2791
+ '跟单sku_id': 1,
2792
+ '花费': 1,
2793
+ '展现数': 1,
2794
+ '点击数': 1,
2795
+ '直接订单行': 1,
2796
+ '直接订单金额': 1,
2797
+ '总订单行': 1,
2798
+ '总订单金额': 1,
2799
+ '直接加购数': 1,
2800
+ '总加购数': 1,
2801
+ 'spu_id': 1,
2802
+ '店铺名称': 1,
2803
+ }
2804
+ __res = []
2805
+ for year in range(2025, datetime.datetime.today().year + 1):
2806
+ df_jd_ziying = self.download.data_to_df(
2807
+ db_name='京东数据3',
2808
+ table_name=f'推广数据_京准通_自营店_{year}',
2809
+ start_date=start_date,
2810
+ end_date=end_date,
2811
+ projection=projection,
2812
+ )
2813
+ __res.append(df_jd_ziying)
2814
+ df_jd_ziying = pd.concat(__res, ignore_index=True)
2815
+ if len(df_jd_ziying) > 0:
2816
+ df_jd_ziying = df_jd_ziying.groupby(
2817
+ ['日期', '店铺名称', '产品线', '触发sku_id', '跟单sku_id', 'spu_id', '花费', '展现数', '点击数'],
2818
+ as_index=False).agg(
2819
+ **{
2820
+ '直接订单行': ('直接订单行', np.max),
2821
+ '直接订单金额': ('直接订单金额', np.max),
2822
+ '成交笔数': ('总订单行', np.max),
2823
+ '成交金额': ('总订单金额', np.max),
2824
+ '直接加购数': ('直接加购数', np.max),
2825
+ '加购量': ('总加购数', np.max),
2826
+ }
2827
+ )
2828
+ df_jd_ziying = df_jd_ziying[['日期', '店铺名称', '产品线', '花费', '展现数', '点击数', '加购量', '成交笔数', '成交金额']]
2829
+ df_jd_ziying.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
2830
+ df_jd_ziying = df_jd_ziying[df_jd_ziying['花费'] > 0]
2831
+
2832
+ _datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_al, df_sj, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx, df_jd_ziying] if len(item) > 0] # 阻止空的 dataframe
2787
2833
  df = pd.concat(_datas, axis=0, ignore_index=True)
2788
2834
  # 超级直播全站推广不包含在营销场景报表中,所以单独添加 2025-03-05
2789
2835
  projection = {
mdbq/mysql/mysql.py CHANGED
@@ -290,32 +290,33 @@ class MysqlUpload:
290
290
  cursor.execute(sql, dict_data['数据主体'])
291
291
 
292
292
  if reset_id:
293
- # 6. 重置自增列
294
- try:
295
- # 查询所有复合主键
296
- sql = (
297
- f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
298
- f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
299
- )
300
- cursor.execute(sql)
301
- result = cursor.fetchall() # 复合主键数
302
- if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
303
- column_name = 'id'
304
- sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
305
- f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
306
- cursor.execute(sql, (db_name, table_name, column_name))
307
- result = cursor.fetchone()
308
- if result:
309
- sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
310
- cursor.execute(sql)
311
- cursor.execute(
312
- f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
313
- cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
314
- else:
315
- logger.info(f'{table_name} 存在复合主键: 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
316
- except Exception as e:
317
- logger.error(f'333 {table_name} {e}')
318
- connection.rollback()
293
+ pass
294
+ # # 6. 重置自增列
295
+ # try:
296
+ # # 查询所有复合主键
297
+ # sql = (
298
+ # f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
299
+ # f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
300
+ # )
301
+ # cursor.execute(sql)
302
+ # result = cursor.fetchall() # 复合主键数
303
+ # if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
304
+ # column_name = 'id'
305
+ # sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
306
+ # f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
307
+ # cursor.execute(sql, (db_name, table_name, column_name))
308
+ # result = cursor.fetchone()
309
+ # if result:
310
+ # sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
311
+ # cursor.execute(sql)
312
+ # cursor.execute(
313
+ # f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
314
+ # cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
315
+ # else:
316
+ # logger.info(f'{table_name} 存在复合主键: 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
317
+ # except Exception as e:
318
+ # logger.error(f'333 {table_name} {e}')
319
+ # connection.rollback()
319
320
  connection.commit()
320
321
 
321
322
  @try_except
@@ -1014,35 +1015,36 @@ class MysqlUpload:
1014
1015
  chunksize=1000
1015
1016
  )
1016
1017
  if reset_id:
1017
- # 6. 重置自增列
1018
- try:
1019
- # 查询所有复合主键
1020
- sql = (
1021
- f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1022
- f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1023
- )
1024
- cursor.execute(sql)
1025
- result = cursor.fetchall() # 复合主键数
1026
- if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1027
- column_name = 'id'
1028
- sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1029
- f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1030
- # cursor.execute(f"SHOW COLUMNS FROM `{table_name}` LIKE 'id'")
1031
- cursor.execute(sql, (db_name, table_name, column_name))
1032
- result = cursor.fetchone()
1033
- if result:
1034
- # cursor.execute(f"ALTER TABLE `{table_name}` DROP COLUMN id;") # 删除 id 列
1035
- sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1036
- cursor.execute(sql)
1037
- cursor.execute(
1038
- f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1039
- cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1040
- # logger.info(f'重置自增id')
1041
- else:
1042
- logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1043
- except Exception as e:
1044
- logger.error(f'333 {table_name} {e}')
1045
- connection.rollback()
1018
+ pass
1019
+ # # 6. 重置自增列
1020
+ # try:
1021
+ # # 查询所有复合主键
1022
+ # sql = (
1023
+ # f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1024
+ # f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1025
+ # )
1026
+ # cursor.execute(sql)
1027
+ # result = cursor.fetchall() # 复合主键数
1028
+ # if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1029
+ # column_name = 'id'
1030
+ # sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1031
+ # f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1032
+ # # cursor.execute(f"SHOW COLUMNS FROM `{table_name}` LIKE 'id'")
1033
+ # cursor.execute(sql, (db_name, table_name, column_name))
1034
+ # result = cursor.fetchone()
1035
+ # if result:
1036
+ # # cursor.execute(f"ALTER TABLE `{table_name}` DROP COLUMN id;") # 删除 id 列
1037
+ # sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1038
+ # cursor.execute(sql)
1039
+ # cursor.execute(
1040
+ # f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1041
+ # cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1042
+ # # logger.info(f'重置自增id')
1043
+ # else:
1044
+ # logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1045
+ # except Exception as e:
1046
+ # logger.error(f'333 {table_name} {e}')
1047
+ # connection.rollback()
1046
1048
  connection.commit() # 提交事务
1047
1049
  connection.close()
1048
1050
  return
@@ -1070,36 +1072,36 @@ class MysqlUpload:
1070
1072
  index=False,
1071
1073
  chunksize=1000
1072
1074
  )
1073
- # 6. 重置自增列
1074
- try:
1075
- # 查询所有复合主键
1076
- sql = (
1077
- f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1078
- f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1079
- )
1080
- cursor.execute(sql)
1081
- result = cursor.fetchall() # 复合主键数
1082
- if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1083
- column_name = 'id'
1084
- sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1085
- f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1086
- # cursor.execute(f"SHOW COLUMNS FROM `{table_name}` LIKE 'id'")
1087
- cursor.execute(sql, (db_name, table_name, column_name))
1088
- result = cursor.fetchone()
1089
- if result:
1090
- # cursor.execute(f"ALTER TABLE `{table_name}` DROP COLUMN id;") # 删除 id 列
1091
- sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1092
- cursor.execute(sql)
1093
- cursor.execute(
1094
- f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1095
- cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1096
- # logger.info(f'重置自增id')
1097
- else:
1098
- logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1099
- except Exception as e:
1100
- logger.error(f'333 {table_name} {e}')
1101
- connection.rollback()
1102
- connection.close()
1075
+ # # 6. 重置自增列
1076
+ # try:
1077
+ # # 查询所有复合主键
1078
+ # sql = (
1079
+ # f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1080
+ # f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1081
+ # )
1082
+ # cursor.execute(sql)
1083
+ # result = cursor.fetchall() # 复合主键数
1084
+ # if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1085
+ # column_name = 'id'
1086
+ # sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1087
+ # f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1088
+ # # cursor.execute(f"SHOW COLUMNS FROM `{table_name}` LIKE 'id'")
1089
+ # cursor.execute(sql, (db_name, table_name, column_name))
1090
+ # result = cursor.fetchone()
1091
+ # if result:
1092
+ # # cursor.execute(f"ALTER TABLE `{table_name}` DROP COLUMN id;") # 删除 id 列
1093
+ # sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1094
+ # cursor.execute(sql)
1095
+ # cursor.execute(
1096
+ # f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1097
+ # cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1098
+ # # logger.info(f'重置自增id')
1099
+ # else:
1100
+ # logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1101
+ # except Exception as e:
1102
+ # logger.error(f'333 {table_name} {e}')
1103
+ # connection.rollback()
1104
+ # connection.close()
1103
1105
  return
1104
1106
 
1105
1107
  datas = df.to_dict(orient='records')
@@ -1189,35 +1191,36 @@ class MysqlUpload:
1189
1191
  pass
1190
1192
 
1191
1193
  if reset_id:
1192
- # 6. 重置自增列
1193
- try:
1194
- # 查询所有复合主键
1195
- sql = (
1196
- f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1197
- f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1198
- )
1199
- cursor.execute(sql)
1200
- result = cursor.fetchall() # 复合主键数
1201
- if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1202
- column_name = 'id'
1203
- sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1204
- f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1205
- # cursor.execute(f"SHOW COLUMNS FROM `{table_name}` LIKE 'id'")
1206
- cursor.execute(sql, (db_name, table_name, column_name))
1207
- result = cursor.fetchone()
1208
- if result:
1209
- # cursor.execute(f"ALTER TABLE `{table_name}` DROP COLUMN id;") # 删除 id 列
1210
- sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1211
- cursor.execute(sql)
1212
- cursor.execute(
1213
- f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1214
- cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1215
- # logger.info(f'重置自增id')
1216
- else:
1217
- logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1218
- except Exception as e:
1219
- logger.error(f'333 {table_name} {e}')
1220
- connection.rollback()
1194
+ pass
1195
+ # # 6. 重置自增列
1196
+ # try:
1197
+ # # 查询所有复合主键
1198
+ # sql = (
1199
+ # f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1200
+ # f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1201
+ # )
1202
+ # cursor.execute(sql)
1203
+ # result = cursor.fetchall() # 复合主键数
1204
+ # if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1205
+ # column_name = 'id'
1206
+ # sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1207
+ # f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1208
+ # # cursor.execute(f"SHOW COLUMNS FROM `{table_name}` LIKE 'id'")
1209
+ # cursor.execute(sql, (db_name, table_name, column_name))
1210
+ # result = cursor.fetchone()
1211
+ # if result:
1212
+ # # cursor.execute(f"ALTER TABLE `{table_name}` DROP COLUMN id;") # 删除 id 列
1213
+ # sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1214
+ # cursor.execute(sql)
1215
+ # cursor.execute(
1216
+ # f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1217
+ # cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1218
+ # # logger.info(f'重置自增id')
1219
+ # else:
1220
+ # logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1221
+ # except Exception as e:
1222
+ # logger.error(f'333 {table_name} {e}')
1223
+ # connection.rollback()
1221
1224
  connection.commit() # 提交事务
1222
1225
  connection.close()
1223
1226
 
@@ -1500,32 +1503,32 @@ class OptimizeDatas:
1500
1503
  else: # 不存在日期列的情况
1501
1504
  self.delete_duplicate2(table_name=table_name, except_key=except_key)
1502
1505
 
1503
- # 6. 重置自增列
1504
- try:
1505
- # 查询所有复合主键
1506
- sql = (
1507
- f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1508
- f"WHERE `TABLE_SCHEMA` = '{self.db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1509
- )
1510
- cursor.execute(sql)
1511
- result = cursor.fetchall() # 复合主键数
1512
- if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1513
- column_name = 'id'
1514
- sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1515
- f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1516
- cursor.execute(sql, (self.db_name, table_name, column_name))
1517
- result = cursor.fetchone()
1518
- if result:
1519
- sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1520
- cursor.execute(sql)
1521
- cursor.execute(
1522
- f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1523
- cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1524
- else:
1525
- logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1526
- except Exception as e:
1527
- logger.error(f'333 {table_name} {e}')
1528
- self.connection.rollback()
1506
+ # # 6. 重置自增列
1507
+ # try:
1508
+ # # 查询所有复合主键
1509
+ # sql = (
1510
+ # f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
1511
+ # f"WHERE `TABLE_SCHEMA` = '{self.db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
1512
+ # )
1513
+ # cursor.execute(sql)
1514
+ # result = cursor.fetchall() # 复合主键数
1515
+ # if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
1516
+ # column_name = 'id'
1517
+ # sql = (f'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS '
1518
+ # f'WHERE TABLE_SCHEMA = %s AND TABLE_NAME = %s AND COLUMN_NAME = %s')
1519
+ # cursor.execute(sql, (self.db_name, table_name, column_name))
1520
+ # result = cursor.fetchone()
1521
+ # if result:
1522
+ # sql = f"ALTER TABLE `{table_name}` DROP COLUMN {column_name}" # 删除 id 列
1523
+ # cursor.execute(sql)
1524
+ # cursor.execute(
1525
+ # f"ALTER TABLE `{table_name}` ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
1526
+ # cursor.execute(f"ALTER TABLE `{table_name}` AUTO_INCREMENT = 1") # 设置自增从 1 开始
1527
+ # else:
1528
+ # logger.info(f'{table_name} 存在复合主键: {[item['PrimaryKey'] for item in result]}, 无法重置自增id')
1529
+ # except Exception as e:
1530
+ # logger.error(f'333 {table_name} {e}')
1531
+ # self.connection.rollback()
1529
1532
  self.connection.close()
1530
1533
  logger.info(f'mysql({self.host}: {self.port}) {self.db_name} 数据库优化完成!')
1531
1534