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 +1 -3
- mdbq/aggregation/query_data.py +49 -3
- mdbq/mysql/mysql.py +143 -140
- mdbq/spider/aikucun.py +377 -385
- {mdbq-3.8.1.dist-info → mdbq-3.8.3.dist-info}/METADATA +1 -1
- {mdbq-3.8.1.dist-info → mdbq-3.8.3.dist-info}/RECORD +8 -9
- mdbq/aggregation/optimize_data_bak.py +0 -30
- {mdbq-3.8.1.dist-info → mdbq-3.8.3.dist-info}/WHEEL +0 -0
- {mdbq-3.8.1.dist-info → mdbq-3.8.3.dist-info}/top_level.txt +0 -0
mdbq/__version__.py
CHANGED
mdbq/aggregation/query_data.py
CHANGED
@@ -468,7 +468,7 @@ class MysqlDatasQuery:
|
|
468
468
|
'店铺名称': 1,
|
469
469
|
}
|
470
470
|
__res = []
|
471
|
-
for year in range(
|
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(
|
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
|
-
|
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
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
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
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
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
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
except Exception as e:
|
1100
|
-
|
1101
|
-
|
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
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
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
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
except Exception as e:
|
1527
|
-
|
1528
|
-
|
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
|
|