mdbq 3.2.9__py3-none-any.whl → 3.2.11__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/aggregation/aggregation.py +72 -20
- mdbq/aggregation/query_data.py +66 -68
- mdbq/mysql/mysql.py +98 -48
- {mdbq-3.2.9.dist-info → mdbq-3.2.11.dist-info}/METADATA +1 -1
- {mdbq-3.2.9.dist-info → mdbq-3.2.11.dist-info}/RECORD +7 -7
- {mdbq-3.2.9.dist-info → mdbq-3.2.11.dist-info}/WHEEL +0 -0
- {mdbq-3.2.9.dist-info → mdbq-3.2.11.dist-info}/top_level.txt +0 -0
mdbq/aggregation/aggregation.py
CHANGED
@@ -52,6 +52,16 @@ if not username:
|
|
52
52
|
print(f'找不到主机:')
|
53
53
|
|
54
54
|
|
55
|
+
def get_encoding(path):
|
56
|
+
"""
|
57
|
+
获取文件的编码方式, 读取速度比较慢,非必要不要使用
|
58
|
+
"""
|
59
|
+
with open(path, 'rb') as f:
|
60
|
+
f1 = f.read()
|
61
|
+
encod = chardet.detect(f1).get('encoding')
|
62
|
+
return encod
|
63
|
+
|
64
|
+
|
55
65
|
class DatabaseUpdateBak:
|
56
66
|
"""
|
57
67
|
清洗文件,并入库,被 tg.py 调用
|
@@ -1174,12 +1184,53 @@ def upload_dir(path, db_name, collection_name, json_path=None):
|
|
1174
1184
|
if '更新时间' not in df.columns.tolist():
|
1175
1185
|
df['更新时间'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
1176
1186
|
|
1187
|
+
# set_typ = {
|
1188
|
+
# '日期': 'date',
|
1189
|
+
# '店铺名称': 'varchar(100)',
|
1190
|
+
# 'spu_id': 'varchar(100)',
|
1191
|
+
# '图片': 'varchar(255)',
|
1192
|
+
# '序号': 'smallint',
|
1193
|
+
# '商品名称': 'varchar(255)',
|
1194
|
+
# '商品款号': 'varchar(255)',
|
1195
|
+
# '一级类目名称': 'varchar(255)',
|
1196
|
+
# '二级类目名称': 'varchar(255)',
|
1197
|
+
# '三级类目名称': 'varchar(255)',
|
1198
|
+
# '数据更新时间': 'timestamp',
|
1199
|
+
# '更新时间': 'timestamp',
|
1200
|
+
# }
|
1201
|
+
# new_dict = {
|
1202
|
+
# '日期': '',
|
1203
|
+
# '店铺名称': '',
|
1204
|
+
# '序号': '',
|
1205
|
+
# '商品名称': '',
|
1206
|
+
# 'spu_id': '',
|
1207
|
+
# '商品款号': '',
|
1208
|
+
# '一级类目名称': '',
|
1209
|
+
# '二级类目名称': '',
|
1210
|
+
# '三级类目名称': '',
|
1211
|
+
# '访客量': '',
|
1212
|
+
# '浏览量': '',
|
1213
|
+
# '下单gmv': '',
|
1214
|
+
# '成交gmv': '',
|
1215
|
+
# '支付人数_成交': '',
|
1216
|
+
# }
|
1217
|
+
# for dict_data in df.to_dict(orient='records'):
|
1218
|
+
# new_dict.update(dict_data)
|
1219
|
+
# m.dict_to_mysql(
|
1220
|
+
# db_name=db_name,
|
1221
|
+
# table_name=collection_name,
|
1222
|
+
# dict_data=new_dict,
|
1223
|
+
# # icm_update=['日期', '店铺名称', 'spu_id', '商品款号'],
|
1224
|
+
# unique_main_key=None,
|
1225
|
+
# set_typ=set_typ,
|
1226
|
+
# )
|
1177
1227
|
m.df_to_mysql(df=df, db_name=db_name, table_name=collection_name,
|
1178
1228
|
move_insert=False, # 先删除,再插入
|
1179
1229
|
df_sql = True,
|
1180
1230
|
drop_duplicates=False,
|
1181
1231
|
count=f'{i}/{count}',
|
1182
1232
|
filename=name,
|
1233
|
+
set_typ={},
|
1183
1234
|
)
|
1184
1235
|
# nas.df_to_mysql(df=df, db_name=db_name, table_name=collection_name, drop_duplicates=True,)
|
1185
1236
|
|
@@ -1195,20 +1246,22 @@ def one_file_to_mysql(file, db_name, table_name):
|
|
1195
1246
|
if file.endswith('.xlsx'):
|
1196
1247
|
df = pd.read_excel(file)
|
1197
1248
|
else:
|
1198
|
-
|
1249
|
+
encod = get_encoding(file)
|
1250
|
+
df = pd.read_csv(file, encoding=encod, header=0, na_filter=False, float_precision='high')
|
1199
1251
|
# df.replace(to_replace=[','], value='', regex=True, inplace=True) # 替换掉特殊字符
|
1200
1252
|
m = mysql.MysqlUpload(username=username, password=password, host=host, port=port)
|
1253
|
+
# df.pop('id')
|
1201
1254
|
m.df_to_mysql(
|
1202
1255
|
df=df,
|
1203
1256
|
db_name=db_name,
|
1204
1257
|
table_name=table_name,
|
1205
1258
|
# icm_update=['sku_id'], # 增量更新, 在聚合数据中使用,其他不要用
|
1206
|
-
move_insert=
|
1259
|
+
move_insert=True, # 先删除,再插入
|
1207
1260
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1208
1261
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1209
1262
|
count=None,
|
1210
1263
|
filename=None, # 用来追踪处理进度
|
1211
|
-
|
1264
|
+
reset_id=True, # 是否重置自增列
|
1212
1265
|
# set_typ=set_typ,
|
1213
1266
|
)
|
1214
1267
|
|
@@ -1278,25 +1331,24 @@ if __name__ == '__main__':
|
|
1278
1331
|
# password = ''
|
1279
1332
|
# host = ''
|
1280
1333
|
# port = ''
|
1281
|
-
#
|
1282
|
-
# # 上传 1 个文件到数据库
|
1283
|
-
# one_file_to_mysql(
|
1284
|
-
# file=r'/Users/xigua/Downloads/城市等级.csv',
|
1285
|
-
# db_name='属性设置3',
|
1286
|
-
# table_name='城市等级',
|
1287
|
-
# )
|
1288
1334
|
|
1335
|
+
# 上传 1 个文件到数据库
|
1336
|
+
one_file_to_mysql(
|
1337
|
+
file=r'/Users/xigua/Downloads/日期表.csv',
|
1338
|
+
db_name='聚合数据test',
|
1339
|
+
table_name='日期表',
|
1340
|
+
)
|
1289
1341
|
|
1290
|
-
col = 1
|
1291
|
-
if col:
|
1292
|
-
# 上传一个目录到指定数据库
|
1293
|
-
db_name = '爱库存2'
|
1294
|
-
table_name = '商品spu榜单'
|
1295
|
-
upload_dir(
|
1296
|
-
path=r'/Users/xigua/Downloads/数据上传中心',
|
1297
|
-
db_name=db_name,
|
1298
|
-
collection_name=table_name,
|
1299
|
-
)
|
1300
1342
|
|
1343
|
+
# col = 1
|
1344
|
+
# if col:
|
1345
|
+
# # 上传一个目录到指定数据库
|
1346
|
+
# db_name = '爱库存2'
|
1347
|
+
# table_name = '商品spu榜单'
|
1348
|
+
# upload_dir(
|
1349
|
+
# path=r'/Users/xigua/Downloads/数据上传中心',
|
1350
|
+
# db_name=db_name,
|
1351
|
+
# collection_name=table_name,
|
1352
|
+
# )
|
1301
1353
|
|
1302
1354
|
|
mdbq/aggregation/query_data.py
CHANGED
@@ -59,6 +59,7 @@ class MysqlDatasQuery:
|
|
59
59
|
self.update_service = True # 调试时加,true: 将数据写入 mysql 服务器
|
60
60
|
self.pf_datas = []
|
61
61
|
self.pf_datas_jd = [] # 京东聚合销售表
|
62
|
+
self.output = set_support.SetSupport(dirname='support')
|
62
63
|
|
63
64
|
@staticmethod
|
64
65
|
def try_except(func): # 在类内部定义一个异常处理方法
|
@@ -196,9 +197,8 @@ class MysqlDatasQuery:
|
|
196
197
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
197
198
|
count=None,
|
198
199
|
filename=None, # 用来追踪处理进度
|
199
|
-
reset_id=
|
200
|
+
reset_id=True, # 是否重置自增列
|
200
201
|
set_typ=set_typ,
|
201
|
-
|
202
202
|
)
|
203
203
|
|
204
204
|
# df_pic:商品排序索引表, 给 powerbi 中的主推款排序用的,(从上月1号到今天的总花费进行排序)
|
@@ -337,7 +337,7 @@ class MysqlDatasQuery:
|
|
337
337
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
338
338
|
count=None,
|
339
339
|
filename=None, # 用来追踪处理进度
|
340
|
-
reset_id=
|
340
|
+
reset_id=True, # 是否重置自增列
|
341
341
|
set_typ=set_typ,
|
342
342
|
)
|
343
343
|
return True
|
@@ -477,7 +477,7 @@ class MysqlDatasQuery:
|
|
477
477
|
df['人群分类'].fillna('', inplace=True)
|
478
478
|
if '人群分类' in df.columns.tolist():
|
479
479
|
# 这行决定了,从文件中读取的分类信息优先级高于内部函数的分类规则
|
480
|
-
# 这个 lambda
|
480
|
+
# 这个 lambda 适配人群名字中带有特定标识的分类,强匹配,自定义命名
|
481
481
|
df['人群分类'] = df.apply(
|
482
482
|
lambda x: self.set_crowd(keyword=str(x['人群名字']), as_file=False) if x['人群分类'] == ''
|
483
483
|
else x['人群分类'], axis=1
|
@@ -527,7 +527,7 @@ class MysqlDatasQuery:
|
|
527
527
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
528
528
|
count=None,
|
529
529
|
filename=None, # 用来追踪处理进度
|
530
|
-
reset_id=
|
530
|
+
reset_id=True, # 是否重置自增列
|
531
531
|
set_typ=set_typ,
|
532
532
|
)
|
533
533
|
return True
|
@@ -663,7 +663,7 @@ class MysqlDatasQuery:
|
|
663
663
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
664
664
|
count=None,
|
665
665
|
filename=None, # 用来追踪处理进度
|
666
|
-
reset_id=
|
666
|
+
reset_id=True, # 是否重置自增列
|
667
667
|
set_typ=set_typ,
|
668
668
|
)
|
669
669
|
return True
|
@@ -787,7 +787,7 @@ class MysqlDatasQuery:
|
|
787
787
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
788
788
|
count=None,
|
789
789
|
filename=None, # 用来追踪处理进度
|
790
|
-
reset_id=
|
790
|
+
reset_id=True, # 是否重置自增列
|
791
791
|
set_typ=set_typ,
|
792
792
|
)
|
793
793
|
return True
|
@@ -900,7 +900,7 @@ class MysqlDatasQuery:
|
|
900
900
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
901
901
|
count=None,
|
902
902
|
filename=None, # 用来追踪处理进度
|
903
|
-
reset_id=
|
903
|
+
reset_id=True, # 是否重置自增列
|
904
904
|
set_typ=set_typ,
|
905
905
|
)
|
906
906
|
return True
|
@@ -957,7 +957,7 @@ class MysqlDatasQuery:
|
|
957
957
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
958
958
|
count=None,
|
959
959
|
filename=None, # 用来追踪处理进度
|
960
|
-
reset_id=
|
960
|
+
reset_id=True, # 是否重置自增列
|
961
961
|
set_typ=set_typ,
|
962
962
|
)
|
963
963
|
return True
|
@@ -1016,7 +1016,6 @@ class MysqlDatasQuery:
|
|
1016
1016
|
filename=None, # 用来追踪处理进度
|
1017
1017
|
reset_id=False, # 是否重置自增列
|
1018
1018
|
set_typ=set_typ,
|
1019
|
-
|
1020
1019
|
)
|
1021
1020
|
return True
|
1022
1021
|
|
@@ -1123,7 +1122,7 @@ class MysqlDatasQuery:
|
|
1123
1122
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1124
1123
|
count=None,
|
1125
1124
|
filename=None, # 用来追踪处理进度
|
1126
|
-
reset_id=
|
1125
|
+
reset_id=True, # 是否重置自增列
|
1127
1126
|
set_typ=set_typ,
|
1128
1127
|
)
|
1129
1128
|
return True
|
@@ -1172,7 +1171,6 @@ class MysqlDatasQuery:
|
|
1172
1171
|
filename=None, # 用来追踪处理进度
|
1173
1172
|
reset_id=False, # 是否重置自增列
|
1174
1173
|
set_typ=set_typ,
|
1175
|
-
|
1176
1174
|
)
|
1177
1175
|
return True
|
1178
1176
|
|
@@ -1276,7 +1274,7 @@ class MysqlDatasQuery:
|
|
1276
1274
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1277
1275
|
count=None,
|
1278
1276
|
filename=None, # 用来追踪处理进度
|
1279
|
-
reset_id=
|
1277
|
+
reset_id=True, # 是否重置自增列
|
1280
1278
|
set_typ=set_typ,
|
1281
1279
|
|
1282
1280
|
)
|
@@ -1311,7 +1309,7 @@ class MysqlDatasQuery:
|
|
1311
1309
|
# drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1312
1310
|
# count=None,
|
1313
1311
|
# filename=None, # 用来追踪处理进度
|
1314
|
-
# reset_id=
|
1312
|
+
# reset_id=True, # 是否重置自增列
|
1315
1313
|
# set_typ=set_typ,
|
1316
1314
|
#
|
1317
1315
|
# )
|
@@ -1380,7 +1378,7 @@ class MysqlDatasQuery:
|
|
1380
1378
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1381
1379
|
count=None,
|
1382
1380
|
filename=None, # 用来追踪处理进度
|
1383
|
-
reset_id=
|
1381
|
+
reset_id=True, # 是否重置自增列
|
1384
1382
|
set_typ=set_typ,
|
1385
1383
|
|
1386
1384
|
)
|
@@ -1482,7 +1480,7 @@ class MysqlDatasQuery:
|
|
1482
1480
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1483
1481
|
count=None,
|
1484
1482
|
filename=None, # 用来追踪处理进度
|
1485
|
-
reset_id=
|
1483
|
+
reset_id=True, # 是否重置自增列
|
1486
1484
|
set_typ=set_typ,
|
1487
1485
|
|
1488
1486
|
)
|
@@ -1557,7 +1555,7 @@ class MysqlDatasQuery:
|
|
1557
1555
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1558
1556
|
count=None,
|
1559
1557
|
filename=None, # 用来追踪处理进度
|
1560
|
-
reset_id=
|
1558
|
+
reset_id=True, # 是否重置自增列
|
1561
1559
|
set_typ=set_typ,
|
1562
1560
|
)
|
1563
1561
|
return True
|
@@ -1623,7 +1621,7 @@ class MysqlDatasQuery:
|
|
1623
1621
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1624
1622
|
count=None,
|
1625
1623
|
filename=None, # 用来追踪处理进度
|
1626
|
-
reset_id=
|
1624
|
+
reset_id=True, # 是否重置自增列
|
1627
1625
|
set_typ=set_typ,
|
1628
1626
|
|
1629
1627
|
)
|
@@ -1707,9 +1705,8 @@ class MysqlDatasQuery:
|
|
1707
1705
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1708
1706
|
count=None,
|
1709
1707
|
filename=None, # 用来追踪处理进度
|
1710
|
-
reset_id=
|
1708
|
+
reset_id=True, # 是否重置自增列
|
1711
1709
|
set_typ=set_typ,
|
1712
|
-
|
1713
1710
|
)
|
1714
1711
|
return True
|
1715
1712
|
|
@@ -2207,7 +2204,7 @@ class MysqlDatasQuery:
|
|
2207
2204
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2208
2205
|
count=None,
|
2209
2206
|
filename=None, # 用来追踪处理进度
|
2210
|
-
reset_id=
|
2207
|
+
reset_id=True, # 是否重置自增列
|
2211
2208
|
set_typ=set_typ,
|
2212
2209
|
|
2213
2210
|
)
|
@@ -2288,46 +2285,46 @@ class MysqlDatasQuery:
|
|
2288
2285
|
max_date = df['日期'].max()
|
2289
2286
|
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
2290
2287
|
print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name} -> {min_date}~{max_date}')
|
2291
|
-
new_dict = {
|
2292
|
-
|
2293
|
-
|
2294
|
-
|
2295
|
-
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2299
|
-
|
2300
|
-
|
2301
|
-
|
2302
|
-
|
2303
|
-
|
2304
|
-
|
2305
|
-
|
2306
|
-
}
|
2307
|
-
for dict_data in df.to_dict(orient='records'):
|
2308
|
-
|
2309
|
-
|
2310
|
-
|
2311
|
-
|
2312
|
-
|
2313
|
-
|
2314
|
-
|
2315
|
-
|
2316
|
-
|
2317
|
-
|
2318
|
-
|
2319
|
-
|
2320
|
-
|
2321
|
-
|
2322
|
-
|
2323
|
-
|
2324
|
-
|
2325
|
-
|
2326
|
-
|
2327
|
-
|
2328
|
-
|
2329
|
-
|
2330
|
-
|
2288
|
+
# new_dict = {
|
2289
|
+
# '日期': '',
|
2290
|
+
# '店铺名称': '',
|
2291
|
+
# '序号': '',
|
2292
|
+
# '商品名称': '',
|
2293
|
+
# 'spu_id': '',
|
2294
|
+
# '商品款号': '',
|
2295
|
+
# '一级类目名称': '',
|
2296
|
+
# '二级类目名称': '',
|
2297
|
+
# '三级类目名称': '',
|
2298
|
+
# '访客量': '',
|
2299
|
+
# '浏览量': '',
|
2300
|
+
# '下单gmv': '',
|
2301
|
+
# '成交gmv': '',
|
2302
|
+
# '支付人数_成交': '',
|
2303
|
+
# }
|
2304
|
+
# for dict_data in df.to_dict(orient='records'):
|
2305
|
+
# new_dict.update(dict_data)
|
2306
|
+
# m_engine.dict_to_mysql(
|
2307
|
+
# db_name=db_name,
|
2308
|
+
# table_name=table_name,
|
2309
|
+
# dict_data=new_dict,
|
2310
|
+
# icm_update=['日期', '店铺名称', 'spu_id', '商品款号'],
|
2311
|
+
# unique_main_key=None,
|
2312
|
+
# set_typ=set_typ,
|
2313
|
+
# )
|
2314
|
+
m_engine.df_to_mysql(
|
2315
|
+
df=df,
|
2316
|
+
db_name=db_name,
|
2317
|
+
table_name=table_name,
|
2318
|
+
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
2319
|
+
move_insert=True, # 先删除,再插入
|
2320
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2321
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2322
|
+
count=None,
|
2323
|
+
filename=None, # 用来追踪处理进度
|
2324
|
+
reset_id=True, # 是否重置自增列
|
2325
|
+
set_typ=set_typ,
|
2326
|
+
|
2327
|
+
)
|
2331
2328
|
return True
|
2332
2329
|
|
2333
2330
|
def deeplink(self, db_name='聚合数据', table_name='达摩盘_deeplink人群洞察'):
|
@@ -2377,7 +2374,7 @@ class MysqlDatasQuery:
|
|
2377
2374
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2378
2375
|
count=None,
|
2379
2376
|
filename=None, # 用来追踪处理进度
|
2380
|
-
reset_id=
|
2377
|
+
reset_id=True, # 是否重置自增列
|
2381
2378
|
set_typ=set_typ,
|
2382
2379
|
|
2383
2380
|
)
|
@@ -2490,7 +2487,7 @@ class MysqlDatasQuery:
|
|
2490
2487
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2491
2488
|
count=None,
|
2492
2489
|
filename=None, # 用来追踪处理进度
|
2493
|
-
reset_id=
|
2490
|
+
reset_id=True, # 是否重置自增列
|
2494
2491
|
set_typ=set_typ,
|
2495
2492
|
)
|
2496
2493
|
return True
|
@@ -2739,6 +2736,7 @@ class MysqlDatasQuery:
|
|
2739
2736
|
'机会',
|
2740
2737
|
'推荐',
|
2741
2738
|
'智能定向',
|
2739
|
+
'AI',
|
2742
2740
|
]
|
2743
2741
|
},
|
2744
2742
|
{
|
@@ -2900,7 +2898,7 @@ class MysqlDatasQuery:
|
|
2900
2898
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2901
2899
|
count=None,
|
2902
2900
|
filename=None, # 用来追踪处理进度
|
2903
|
-
reset_id=
|
2901
|
+
reset_id=True, # 是否重置自增列
|
2904
2902
|
set_typ=set_typ,
|
2905
2903
|
)
|
2906
2904
|
return True
|
@@ -3010,7 +3008,7 @@ class MysqlDatasQuery:
|
|
3010
3008
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
3011
3009
|
count=None,
|
3012
3010
|
filename=None, # 用来追踪处理进度
|
3013
|
-
reset_id=
|
3011
|
+
reset_id=True, # 是否重置自增列
|
3014
3012
|
set_typ=set_typ,
|
3015
3013
|
)
|
3016
3014
|
return True
|
@@ -3081,7 +3079,7 @@ class MysqlDatasQuery:
|
|
3081
3079
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
3082
3080
|
count=None,
|
3083
3081
|
filename=None, # 用来追踪处理进度
|
3084
|
-
reset_id=
|
3082
|
+
reset_id=True, # 是否重置自增列
|
3085
3083
|
set_typ=set_typ,
|
3086
3084
|
)
|
3087
3085
|
return True
|
@@ -3310,7 +3308,7 @@ if __name__ == '__main__':
|
|
3310
3308
|
# future_to_function = {
|
3311
3309
|
# executor.submit(
|
3312
3310
|
# func_query,
|
3313
|
-
# months=
|
3311
|
+
# months=1,
|
3314
3312
|
# less_dict=[],
|
3315
3313
|
# ),
|
3316
3314
|
# }
|
@@ -3318,7 +3316,7 @@ if __name__ == '__main__':
|
|
3318
3316
|
# 3. 清理聚合数据
|
3319
3317
|
optimize_data.op_data(
|
3320
3318
|
db_name_lists=['聚合数据'],
|
3321
|
-
days=
|
3319
|
+
days=100, # 清理聚合数据的日期长度
|
3322
3320
|
is_mongo=False,
|
3323
3321
|
is_mysql=True,
|
3324
3322
|
)
|
mdbq/mysql/mysql.py
CHANGED
@@ -398,6 +398,9 @@ class MysqlUpload:
|
|
398
398
|
df.replace(to_replace=['"'], value='', regex=True, inplace=True)
|
399
399
|
cols = df.columns.tolist()
|
400
400
|
for col in cols:
|
401
|
+
if col == 'id':
|
402
|
+
df.pop('id')
|
403
|
+
continue
|
401
404
|
df[col] = df[col].apply(lambda x: float(re.sub(r'%$', '', str(x))) / 100 if (
|
402
405
|
str(x) != '' and str(x).endswith('%')) and not re.findall('[\\u4e00-\\u9fa5]', str(x)) else '0.0' if str(x) == '0%' else x)
|
403
406
|
try:
|
@@ -587,18 +590,29 @@ class MysqlUpload:
|
|
587
590
|
)
|
588
591
|
if reset_id:
|
589
592
|
pass
|
590
|
-
#
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
593
|
+
# 6. 重置自增列
|
594
|
+
try:
|
595
|
+
# 查询所有复合主键
|
596
|
+
sql = (
|
597
|
+
f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
|
598
|
+
f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
|
599
|
+
)
|
600
|
+
cursor.execute(sql)
|
601
|
+
result = cursor.fetchall() # 复合主键数
|
602
|
+
if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
|
603
|
+
cursor.execute(f"SHOW COLUMNS FROM {table_name} LIKE 'id'")
|
604
|
+
result = cursor.fetchone()
|
605
|
+
if result:
|
606
|
+
cursor.execute(f"ALTER TABLE {table_name} DROP COLUMN id;") # 删除 id 列
|
607
|
+
cursor.execute(
|
608
|
+
f"ALTER TABLE {table_name} ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
|
609
|
+
cursor.execute(f"ALTER TABLE {table_name} AUTO_INCREMENT = 1") # 设置自增从 1 开始
|
610
|
+
# print(f'重置自增id')
|
611
|
+
else:
|
612
|
+
print(f'{table_name} 当前表存在复合主键: {result}, 无法重置自增id')
|
613
|
+
except Exception as e:
|
614
|
+
print(f'{e}')
|
615
|
+
connection.rollback()
|
602
616
|
connection.commit() # 提交事务
|
603
617
|
connection.close()
|
604
618
|
return
|
@@ -607,8 +621,11 @@ class MysqlUpload:
|
|
607
621
|
if move_insert and '日期' in df.columns.tolist():
|
608
622
|
# 移除数据
|
609
623
|
dates = df['日期'].values.tolist()
|
624
|
+
# print(dates)
|
625
|
+
dates = [pd.to_datetime(item) for item in dates] # 需要先转换类型才能用 min, max
|
610
626
|
start_date = pd.to_datetime(min(dates)).strftime('%Y-%m-%d')
|
611
627
|
end_date = (pd.to_datetime(max(dates)) + datetime.timedelta(days=1)).strftime('%Y-%m-%d')
|
628
|
+
|
612
629
|
sql = f"DELETE FROM `{table_name}` WHERE {'日期'} BETWEEN '%s' AND '%s'" % (start_date, end_date)
|
613
630
|
cursor.execute(sql)
|
614
631
|
connection.commit()
|
@@ -625,18 +642,28 @@ class MysqlUpload:
|
|
625
642
|
)
|
626
643
|
# 6. 重置自增列
|
627
644
|
if reset_id:
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
645
|
+
try:
|
646
|
+
# 查询所有复合主键
|
647
|
+
sql = (
|
648
|
+
f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
|
649
|
+
f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
|
650
|
+
)
|
651
|
+
cursor.execute(sql)
|
652
|
+
result = cursor.fetchall() # 复合主键数
|
653
|
+
if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
|
654
|
+
cursor.execute(f"SHOW COLUMNS FROM {table_name} LIKE 'id'")
|
655
|
+
result = cursor.fetchone()
|
656
|
+
if result:
|
657
|
+
cursor.execute(f"ALTER TABLE {table_name} DROP COLUMN id;") # 删除 id 列
|
658
|
+
cursor.execute(
|
659
|
+
f"ALTER TABLE {table_name} ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
|
660
|
+
cursor.execute(f"ALTER TABLE {table_name} AUTO_INCREMENT = 1") # 设置自增从 1 开始
|
661
|
+
# print(f'重置自增id')
|
662
|
+
else:
|
663
|
+
print(f'{table_name} 当前表存在复合主键: {result}, 无法重置自增id')
|
664
|
+
except Exception as e:
|
665
|
+
print(f'{e}')
|
666
|
+
connection.rollback()
|
640
667
|
connection.close()
|
641
668
|
return
|
642
669
|
|
@@ -730,18 +757,30 @@ class MysqlUpload:
|
|
730
757
|
# print(f'mysql -> df_to_mysql 报错: {e}, {self.filename}')
|
731
758
|
# breakpoint()
|
732
759
|
|
733
|
-
#
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
760
|
+
# 6. 重置自增列
|
761
|
+
if reset_id:
|
762
|
+
try:
|
763
|
+
# 查询所有复合主键
|
764
|
+
sql = (
|
765
|
+
f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
|
766
|
+
f"WHERE `TABLE_SCHEMA` = '{db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
|
767
|
+
)
|
768
|
+
cursor.execute(sql)
|
769
|
+
result = cursor.fetchall() # 复合主键数
|
770
|
+
if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
|
771
|
+
cursor.execute(f"SHOW COLUMNS FROM {table_name} LIKE 'id'")
|
772
|
+
result = cursor.fetchone()
|
773
|
+
if result:
|
774
|
+
cursor.execute(f"ALTER TABLE {table_name} DROP COLUMN id;") # 删除 id 列
|
775
|
+
cursor.execute(
|
776
|
+
f"ALTER TABLE {table_name} ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
|
777
|
+
cursor.execute(f"ALTER TABLE {table_name} AUTO_INCREMENT = 1") # 设置自增从 1 开始
|
778
|
+
# print(f'重置自增id')
|
779
|
+
else:
|
780
|
+
print(f'{table_name} 当前表存在复合主键: {result}, 无法重置自增id')
|
781
|
+
except Exception as e:
|
782
|
+
print(f'{e}')
|
783
|
+
connection.rollback()
|
745
784
|
connection.commit() # 提交事务
|
746
785
|
connection.close()
|
747
786
|
|
@@ -979,18 +1018,29 @@ class OptimizeDatas:
|
|
979
1018
|
else: # 不存在日期列的情况
|
980
1019
|
self.delete_duplicate2(table_name=table_name, except_key=except_key)
|
981
1020
|
|
982
|
-
#
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
1021
|
+
# 6. 重置自增列
|
1022
|
+
try:
|
1023
|
+
# 查询所有复合主键
|
1024
|
+
sql = (
|
1025
|
+
f"SELECT `COLUMN_NAME` AS `PrimaryKey` FROM `information_schema`.`COLUMNS` "
|
1026
|
+
f"WHERE `TABLE_SCHEMA` = '{self.db_name}'AND `TABLE_NAME` = '{table_name}' AND `COLUMN_KEY` = 'PRI';"
|
1027
|
+
)
|
1028
|
+
cursor.execute(sql)
|
1029
|
+
result = cursor.fetchall() # 复合主键数
|
1030
|
+
if len(result) <= 1: # 如果存在复合主键,则不能直接删除 id 键,其他主键可能不是唯一,会报错
|
1031
|
+
cursor.execute(f"SHOW COLUMNS FROM {table_name} LIKE 'id'")
|
1032
|
+
result = cursor.fetchone()
|
1033
|
+
if result:
|
1034
|
+
cursor.execute(f"ALTER TABLE {table_name} DROP COLUMN id;") # 删除 id 列
|
1035
|
+
cursor.execute(
|
1036
|
+
f"ALTER TABLE {table_name} ADD column id INT AUTO_INCREMENT PRIMARY KEY FIRST;")
|
1037
|
+
cursor.execute(f"ALTER TABLE {table_name} AUTO_INCREMENT = 1") # 设置自增从 1 开始
|
1038
|
+
# print(f'重置自增id')
|
1039
|
+
else:
|
1040
|
+
print(f'{table_name} 当前表存在复合主键: {result}, 无法重置自增id')
|
1041
|
+
except Exception as e:
|
1042
|
+
print(f'{e}')
|
1043
|
+
self.connection.rollback()
|
994
1044
|
self.connection.close()
|
995
1045
|
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S ")
|
996
1046
|
print(f'{now}mysql({self.host}: {self.port}) {self.db_name} 数据库优化完成!')
|
@@ -1,11 +1,11 @@
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
2
2
|
mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
|
-
mdbq/aggregation/aggregation.py,sha256=
|
4
|
+
mdbq/aggregation/aggregation.py,sha256=ifactmmJYkm0UUgQG9rn6ledHnc1eFXXPdDywdB-690,76622
|
5
5
|
mdbq/aggregation/df_types.py,sha256=U9i3q2eRPTDY8qAPTw7irzu-Tlg4CIySW9uYro81wdk,8125
|
6
6
|
mdbq/aggregation/mysql_types.py,sha256=YTGyrF9vcRgfkQbpT-e-JdJ7c7VF1dDHgyx9YZRES8w,10934
|
7
7
|
mdbq/aggregation/optimize_data.py,sha256=RXIv7cACCgYyehAxMjUYi_S7rVyjIwXKWMaM3nduGtA,3068
|
8
|
-
mdbq/aggregation/query_data.py,sha256=
|
8
|
+
mdbq/aggregation/query_data.py,sha256=lXJMlyHM9cSVD7rgf4dHR5NZwMXPt3OjM1Q91DYwbZc,148259
|
9
9
|
mdbq/aggregation/query_data_bak.py,sha256=r1FU0C4zjXln7oVSrRkElh4Ehl-9mYhGcq57jLbViUA,104071
|
10
10
|
mdbq/aggregation/query_data_bak20241124.py,sha256=oY95ZK3qt3Wx9pdZKZ5cvDh45Yi5yGj1kl8G6riumHA,144513
|
11
11
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
@@ -28,7 +28,7 @@ mdbq/log/mylogger.py,sha256=oaT7Bp-Hb9jZt52seP3ISUuxVcI19s4UiqTeouScBO0,3258
|
|
28
28
|
mdbq/mongo/__init__.py,sha256=SILt7xMtQIQl_m-ik9WLtJSXIVf424iYgCfE_tnQFbw,13
|
29
29
|
mdbq/mongo/mongo.py,sha256=v9qvrp6p1ZRWuPpbSilqveiE0FEcZF7U5xUPI0RN4xs,31880
|
30
30
|
mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
31
|
-
mdbq/mysql/mysql.py,sha256
|
31
|
+
mdbq/mysql/mysql.py,sha256=-mM51DUH2BWjRSF1ySPFGxMq1fIi5vI9UwAH5X1-nQ4,67760
|
32
32
|
mdbq/mysql/recheck_mysql.py,sha256=rgTpvDMWYTyEn7UQdlig-pdXDluTgiU8JG6lkMh8DV0,8665
|
33
33
|
mdbq/mysql/s_query.py,sha256=MbIprZ4yJDAZ9AahZPzl7hqS695Vs0P-AJNwAtA_EEc,9287
|
34
34
|
mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
|
@@ -46,7 +46,7 @@ mdbq/req_post/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
|
46
46
|
mdbq/req_post/req_tb.py,sha256=qg7pet73IgKGmCwxaeUyImJIoeK_pBQT9BBKD7fkBNg,36160
|
47
47
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
48
48
|
mdbq/spider/aikucun.py,sha256=nIKKZOZbemKqcrikcrMmtksLgJjjzeU0I99teBgU1jE,22439
|
49
|
-
mdbq-3.2.
|
50
|
-
mdbq-3.2.
|
51
|
-
mdbq-3.2.
|
52
|
-
mdbq-3.2.
|
49
|
+
mdbq-3.2.11.dist-info/METADATA,sha256=dRsOoo5Ocv2miwmeKzk3OMkmgBfN0LKuQ7fnj6YqtJQ,244
|
50
|
+
mdbq-3.2.11.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
51
|
+
mdbq-3.2.11.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
52
|
+
mdbq-3.2.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|