mdbq 3.3.2__py3-none-any.whl → 3.3.4__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/query_data.py +393 -31
- mdbq/mysql/mysql.py +90 -16
- mdbq/spider/aikucun.py +64 -11
- {mdbq-3.3.2.dist-info → mdbq-3.3.4.dist-info}/METADATA +1 -1
- {mdbq-3.3.2.dist-info → mdbq-3.3.4.dist-info}/RECORD +7 -7
- {mdbq-3.3.2.dist-info → mdbq-3.3.4.dist-info}/WHEEL +1 -1
- {mdbq-3.3.2.dist-info → mdbq-3.3.4.dist-info}/top_level.txt +0 -0
mdbq/aggregation/query_data.py
CHANGED
@@ -25,26 +25,54 @@ import traceback
|
|
25
25
|
|
26
26
|
"""
|
27
27
|
error_file = os.path.join(set_support.SetSupport(dirname='support').dirname, 'error.log')
|
28
|
-
username, password, host, port,
|
29
|
-
|
28
|
+
m_engine = mysql.MysqlUpload(username='', password='', host='', port=0, charset='utf8mb4')
|
29
|
+
company_engine = mysql.MysqlUpload(username='', password='', host='', port=0, charset='utf8mb4')
|
30
|
+
|
31
|
+
if socket.gethostname() == 'company' or socket.gethostname() == 'Mac2.local':
|
30
32
|
conf = myconfig.main()
|
31
|
-
conf_data = conf['Windows']['xigua_lx']['mysql']['
|
33
|
+
conf_data = conf['Windows']['xigua_lx']['mysql']['remoto']
|
32
34
|
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
m_engine = mysql.MysqlUpload(
|
36
|
+
username=username,
|
37
|
+
password=password,
|
38
|
+
host=host,
|
39
|
+
port=port,
|
40
|
+
charset='utf8mb4'
|
41
|
+
)
|
36
42
|
conf_data = conf['Windows']['company']['mysql']['local']
|
37
43
|
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
company_engine = mysql.MysqlUpload(
|
45
|
+
username=username,
|
46
|
+
password=password,
|
47
|
+
host=host,
|
48
|
+
port=port,
|
49
|
+
charset='utf8mb4'
|
50
|
+
)
|
51
|
+
targe_host = 'company'
|
52
|
+
|
53
|
+
else:
|
54
|
+
conf = myconfig.main()
|
55
|
+
|
56
|
+
conf_data = conf['Windows']['company']['mysql']['remoto']
|
57
|
+
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
58
|
+
company_engine = mysql.MysqlUpload(
|
59
|
+
username=username,
|
60
|
+
password=password,
|
61
|
+
host=host,
|
62
|
+
port=port,
|
63
|
+
charset='utf8mb4'
|
64
|
+
)
|
65
|
+
|
66
|
+
conf_data = conf['Windows']['xigua_lx']['mysql']['local']
|
67
|
+
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
68
|
+
m_engine = mysql.MysqlUpload(
|
69
|
+
username=username,
|
70
|
+
password=password,
|
71
|
+
host=host,
|
72
|
+
port=port,
|
73
|
+
charset='utf8mb4'
|
74
|
+
)
|
75
|
+
targe_host = 'xigua_lx'
|
48
76
|
|
49
77
|
|
50
78
|
class MysqlDatasQuery:
|
@@ -200,6 +228,19 @@ class MysqlDatasQuery:
|
|
200
228
|
reset_id=True, # 是否重置自增列
|
201
229
|
set_typ=set_typ,
|
202
230
|
)
|
231
|
+
company_engine.df_to_mysql(
|
232
|
+
df=df,
|
233
|
+
db_name=db_name,
|
234
|
+
table_name=table_name,
|
235
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
236
|
+
move_insert=True, # 先删除,再插入
|
237
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
238
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
239
|
+
count=None,
|
240
|
+
filename=None, # 用来追踪处理进度
|
241
|
+
reset_id=True, # 是否重置自增列
|
242
|
+
set_typ=set_typ,
|
243
|
+
)
|
203
244
|
|
204
245
|
# df_pic:商品排序索引表, 给 powerbi 中的主推款排序用的,(从上月1号到今天的总花费进行排序)
|
205
246
|
today = datetime.date.today()
|
@@ -248,6 +289,19 @@ class MysqlDatasQuery:
|
|
248
289
|
reset_id=False, # 是否重置自增列
|
249
290
|
set_typ=set_typ,
|
250
291
|
)
|
292
|
+
company_engine.df_to_mysql(
|
293
|
+
df=df_pic,
|
294
|
+
db_name='属性设置3',
|
295
|
+
table_name='商品索引表_主推排序调用',
|
296
|
+
icm_update=['商品id'], # 增量更新, 在聚合数据中使用,其他不要用
|
297
|
+
move_insert=False, # 先删除,再插入
|
298
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
299
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
300
|
+
count=None,
|
301
|
+
filename=None, # 用来追踪处理进度
|
302
|
+
reset_id=False, # 是否重置自增列
|
303
|
+
set_typ=set_typ,
|
304
|
+
)
|
251
305
|
return True
|
252
306
|
|
253
307
|
@try_except
|
@@ -340,6 +394,19 @@ class MysqlDatasQuery:
|
|
340
394
|
reset_id=True, # 是否重置自增列
|
341
395
|
set_typ=set_typ,
|
342
396
|
)
|
397
|
+
company_engine.df_to_mysql(
|
398
|
+
df=df,
|
399
|
+
db_name=db_name,
|
400
|
+
table_name=table_name,
|
401
|
+
# icm_update=['日期', '宝贝id'], # 增量更新, 在聚合数据中使用,其他不要用
|
402
|
+
move_insert=True, # 先删除,再插入
|
403
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
404
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
405
|
+
count=None,
|
406
|
+
filename=None, # 用来追踪处理进度
|
407
|
+
reset_id=True, # 是否重置自增列
|
408
|
+
set_typ=set_typ,
|
409
|
+
)
|
343
410
|
return True
|
344
411
|
|
345
412
|
@try_except
|
@@ -530,6 +597,19 @@ class MysqlDatasQuery:
|
|
530
597
|
reset_id=True, # 是否重置自增列
|
531
598
|
set_typ=set_typ,
|
532
599
|
)
|
600
|
+
company_engine.df_to_mysql(
|
601
|
+
df=df,
|
602
|
+
db_name=db_name,
|
603
|
+
table_name=table_name,
|
604
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '人群名字'], # 增量更新, 在聚合数据中使用,其他不要用
|
605
|
+
move_insert=True, # 先删除,再插入
|
606
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
607
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
608
|
+
count=None,
|
609
|
+
filename=None, # 用来追踪处理进度
|
610
|
+
reset_id=True, # 是否重置自增列
|
611
|
+
set_typ=set_typ,
|
612
|
+
)
|
533
613
|
return True
|
534
614
|
|
535
615
|
@try_except
|
@@ -666,6 +746,19 @@ class MysqlDatasQuery:
|
|
666
746
|
reset_id=True, # 是否重置自增列
|
667
747
|
set_typ=set_typ,
|
668
748
|
)
|
749
|
+
company_engine.df_to_mysql(
|
750
|
+
df=df,
|
751
|
+
db_name=db_name,
|
752
|
+
table_name=table_name,
|
753
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '词类型', '词名字_词包名字',], # 增量更新, 在聚合数据中使用,其他不要用
|
754
|
+
move_insert=True, # 先删除,再插入
|
755
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
756
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
757
|
+
count=None,
|
758
|
+
filename=None, # 用来追踪处理进度
|
759
|
+
reset_id=True, # 是否重置自增列
|
760
|
+
set_typ=set_typ,
|
761
|
+
)
|
669
762
|
return True
|
670
763
|
|
671
764
|
@try_except
|
@@ -790,6 +883,19 @@ class MysqlDatasQuery:
|
|
790
883
|
reset_id=True, # 是否重置自增列
|
791
884
|
set_typ=set_typ,
|
792
885
|
)
|
886
|
+
company_engine.df_to_mysql(
|
887
|
+
df=df,
|
888
|
+
db_name=db_name,
|
889
|
+
table_name=table_name,
|
890
|
+
# icm_update=['日期', '推广渠道', '营销场景', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
891
|
+
move_insert=True, # 先删除,再插入
|
892
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
893
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
894
|
+
count=None,
|
895
|
+
filename=None, # 用来追踪处理进度
|
896
|
+
reset_id=True, # 是否重置自增列
|
897
|
+
set_typ=set_typ,
|
898
|
+
)
|
793
899
|
return True
|
794
900
|
|
795
901
|
@try_except
|
@@ -903,6 +1009,19 @@ class MysqlDatasQuery:
|
|
903
1009
|
reset_id=True, # 是否重置自增列
|
904
1010
|
set_typ=set_typ,
|
905
1011
|
)
|
1012
|
+
company_engine.df_to_mysql(
|
1013
|
+
df=df,
|
1014
|
+
db_name=db_name,
|
1015
|
+
table_name=table_name,
|
1016
|
+
# icm_update=['日期', '报表类型', '推广渠道', '营销场景', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
1017
|
+
move_insert=True, # 先删除,再插入
|
1018
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1019
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1020
|
+
count=None,
|
1021
|
+
filename=None, # 用来追踪处理进度
|
1022
|
+
reset_id=True, # 是否重置自增列
|
1023
|
+
set_typ=set_typ,
|
1024
|
+
)
|
906
1025
|
return True
|
907
1026
|
|
908
1027
|
@try_except
|
@@ -960,6 +1079,19 @@ class MysqlDatasQuery:
|
|
960
1079
|
reset_id=True, # 是否重置自增列
|
961
1080
|
set_typ=set_typ,
|
962
1081
|
)
|
1082
|
+
company_engine.df_to_mysql(
|
1083
|
+
df=df,
|
1084
|
+
db_name=db_name,
|
1085
|
+
table_name=table_name,
|
1086
|
+
icm_update=['宝贝id'], # 增量更新, 在聚合数据中使用,其他不要用
|
1087
|
+
move_insert=False, # 先删除,再插入
|
1088
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1089
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1090
|
+
count=None,
|
1091
|
+
filename=None, # 用来追踪处理进度
|
1092
|
+
reset_id=True, # 是否重置自增列
|
1093
|
+
set_typ=set_typ,
|
1094
|
+
)
|
963
1095
|
return True
|
964
1096
|
|
965
1097
|
@try_except
|
@@ -1017,6 +1149,19 @@ class MysqlDatasQuery:
|
|
1017
1149
|
reset_id=False, # 是否重置自增列
|
1018
1150
|
set_typ=set_typ,
|
1019
1151
|
)
|
1152
|
+
company_engine.df_to_mysql(
|
1153
|
+
df=df,
|
1154
|
+
db_name=db_name,
|
1155
|
+
table_name=table_name,
|
1156
|
+
icm_update=['商品id'], # 增量更新, 在聚合数据中使用,其他不要用
|
1157
|
+
move_insert=False, # 先删除,再插入
|
1158
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1159
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1160
|
+
count=None,
|
1161
|
+
filename=None, # 用来追踪处理进度
|
1162
|
+
reset_id=False, # 是否重置自增列
|
1163
|
+
set_typ=set_typ,
|
1164
|
+
)
|
1020
1165
|
return True
|
1021
1166
|
|
1022
1167
|
# @try_except
|
@@ -1125,6 +1270,19 @@ class MysqlDatasQuery:
|
|
1125
1270
|
reset_id=True, # 是否重置自增列
|
1126
1271
|
set_typ=set_typ,
|
1127
1272
|
)
|
1273
|
+
company_engine.df_to_mysql(
|
1274
|
+
df=df,
|
1275
|
+
db_name=db_name,
|
1276
|
+
table_name=table_name,
|
1277
|
+
# icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
|
1278
|
+
move_insert=True, # 先删除,再插入
|
1279
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1280
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1281
|
+
count=None,
|
1282
|
+
filename=None, # 用来追踪处理进度
|
1283
|
+
reset_id=True, # 是否重置自增列
|
1284
|
+
set_typ=set_typ,
|
1285
|
+
)
|
1128
1286
|
return True
|
1129
1287
|
|
1130
1288
|
@try_except
|
@@ -1172,6 +1330,19 @@ class MysqlDatasQuery:
|
|
1172
1330
|
reset_id=False, # 是否重置自增列
|
1173
1331
|
set_typ=set_typ,
|
1174
1332
|
)
|
1333
|
+
company_engine.df_to_mysql(
|
1334
|
+
df=df,
|
1335
|
+
db_name=db_name,
|
1336
|
+
table_name=table_name,
|
1337
|
+
icm_update=['款号'], # 增量更新, 在聚合数据中使用,其他不要用
|
1338
|
+
move_insert=False, # 先删除,再插入
|
1339
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1340
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1341
|
+
count=None,
|
1342
|
+
filename=None, # 用来追踪处理进度
|
1343
|
+
reset_id=False, # 是否重置自增列
|
1344
|
+
set_typ=set_typ,
|
1345
|
+
)
|
1175
1346
|
return True
|
1176
1347
|
|
1177
1348
|
# @try_except
|
@@ -1276,7 +1447,19 @@ class MysqlDatasQuery:
|
|
1276
1447
|
filename=None, # 用来追踪处理进度
|
1277
1448
|
reset_id=True, # 是否重置自增列
|
1278
1449
|
set_typ=set_typ,
|
1279
|
-
|
1450
|
+
)
|
1451
|
+
company_engine.df_to_mysql(
|
1452
|
+
df=df,
|
1453
|
+
db_name=db_name,
|
1454
|
+
table_name=table_name,
|
1455
|
+
# icm_update=['日期', '产品线', '触发sku_id', '跟单sku_id', '花费', ], # 增量更新, 在聚合数据中使用,其他不要用
|
1456
|
+
move_insert=True, # 先删除,再插入
|
1457
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1458
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1459
|
+
count=None,
|
1460
|
+
filename=None, # 用来追踪处理进度
|
1461
|
+
reset_id=True, # 是否重置自增列
|
1462
|
+
set_typ=set_typ,
|
1280
1463
|
)
|
1281
1464
|
|
1282
1465
|
# # 按照 spu 聚合
|
@@ -1310,8 +1493,20 @@ class MysqlDatasQuery:
|
|
1310
1493
|
# count=None,
|
1311
1494
|
# filename=None, # 用来追踪处理进度
|
1312
1495
|
# reset_id=True, # 是否重置自增列
|
1313
|
-
# set_typ=set_typ
|
1314
|
-
#
|
1496
|
+
# set_typ=set_typ
|
1497
|
+
# )
|
1498
|
+
# company_engine.df_to_mysql(
|
1499
|
+
# df=df,
|
1500
|
+
# db_name=db_name,
|
1501
|
+
# table_name='京东_京准通_按spu',
|
1502
|
+
# # icm_update=['日期', '产品线', '触发sku_id', '跟单sku_id', '花费', ], # 增量更新, 在聚合数据中使用,其他不要用
|
1503
|
+
# move_insert=True, # 先删除,再插入
|
1504
|
+
# df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1505
|
+
# drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1506
|
+
# count=None,
|
1507
|
+
# filename=None, # 用来追踪处理进度
|
1508
|
+
# reset_id=True, # 是否重置自增列
|
1509
|
+
# set_typ=set_typ
|
1315
1510
|
# )
|
1316
1511
|
|
1317
1512
|
return True
|
@@ -1379,8 +1574,20 @@ class MysqlDatasQuery:
|
|
1379
1574
|
count=None,
|
1380
1575
|
filename=None, # 用来追踪处理进度
|
1381
1576
|
reset_id=True, # 是否重置自增列
|
1382
|
-
set_typ=set_typ
|
1383
|
-
|
1577
|
+
set_typ=set_typ
|
1578
|
+
)
|
1579
|
+
company_engine.df_to_mysql(
|
1580
|
+
df=df,
|
1581
|
+
db_name=db_name,
|
1582
|
+
table_name=table_name,
|
1583
|
+
# icm_update=['日期', '产品线', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
1584
|
+
move_insert=True, # 先删除,再插入
|
1585
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1586
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1587
|
+
count=None,
|
1588
|
+
filename=None, # 用来追踪处理进度
|
1589
|
+
reset_id=True, # 是否重置自增列
|
1590
|
+
set_typ=set_typ
|
1384
1591
|
)
|
1385
1592
|
return True
|
1386
1593
|
|
@@ -1481,8 +1688,20 @@ class MysqlDatasQuery:
|
|
1481
1688
|
count=None,
|
1482
1689
|
filename=None, # 用来追踪处理进度
|
1483
1690
|
reset_id=True, # 是否重置自增列
|
1484
|
-
set_typ=set_typ
|
1485
|
-
|
1691
|
+
set_typ=set_typ
|
1692
|
+
)
|
1693
|
+
company_engine.df_to_mysql(
|
1694
|
+
df=df,
|
1695
|
+
db_name=db_name,
|
1696
|
+
table_name=table_name,
|
1697
|
+
# icm_update=['日期', '产品线', '搜索词', '关键词', '展现数', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
1698
|
+
move_insert=True, # 先删除,再插入
|
1699
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1700
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1701
|
+
count=None,
|
1702
|
+
filename=None, # 用来追踪处理进度
|
1703
|
+
reset_id=True, # 是否重置自增列
|
1704
|
+
set_typ=set_typ
|
1486
1705
|
)
|
1487
1706
|
return True
|
1488
1707
|
|
@@ -1558,6 +1777,19 @@ class MysqlDatasQuery:
|
|
1558
1777
|
reset_id=True, # 是否重置自增列
|
1559
1778
|
set_typ=set_typ,
|
1560
1779
|
)
|
1780
|
+
company_engine.df_to_mysql(
|
1781
|
+
df=df,
|
1782
|
+
db_name=db_name,
|
1783
|
+
table_name=table_name,
|
1784
|
+
# icm_update=['日期', '商品id', '成交单量'], # 增量更新, 在聚合数据中使用,其他不要用
|
1785
|
+
move_insert=True, # 先删除,再插入
|
1786
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1787
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1788
|
+
count=None,
|
1789
|
+
filename=None, # 用来追踪处理进度
|
1790
|
+
reset_id=True, # 是否重置自增列
|
1791
|
+
set_typ=set_typ,
|
1792
|
+
)
|
1561
1793
|
return True
|
1562
1794
|
|
1563
1795
|
@try_except
|
@@ -1622,8 +1854,20 @@ class MysqlDatasQuery:
|
|
1622
1854
|
count=None,
|
1623
1855
|
filename=None, # 用来追踪处理进度
|
1624
1856
|
reset_id=True, # 是否重置自增列
|
1625
|
-
set_typ=set_typ
|
1626
|
-
|
1857
|
+
set_typ=set_typ
|
1858
|
+
)
|
1859
|
+
company_engine.df_to_mysql(
|
1860
|
+
df=df,
|
1861
|
+
db_name=db_name,
|
1862
|
+
table_name=table_name,
|
1863
|
+
# icm_update=['日期', '商品id', '成交单量'], # 增量更新, 在聚合数据中使用,其他不要用
|
1864
|
+
move_insert=True, # 先删除,再插入
|
1865
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1866
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1867
|
+
count=None,
|
1868
|
+
filename=None, # 用来追踪处理进度
|
1869
|
+
reset_id=True, # 是否重置自增列
|
1870
|
+
set_typ=set_typ
|
1627
1871
|
)
|
1628
1872
|
return True
|
1629
1873
|
|
@@ -1708,6 +1952,19 @@ class MysqlDatasQuery:
|
|
1708
1952
|
reset_id=True, # 是否重置自增列
|
1709
1953
|
set_typ=set_typ,
|
1710
1954
|
)
|
1955
|
+
company_engine.df_to_mysql(
|
1956
|
+
df=df,
|
1957
|
+
db_name=db_name,
|
1958
|
+
table_name=table_name,
|
1959
|
+
# icm_update=['日期', '店铺名称', '词类型', '搜索词'], # 增量更新, 在聚合数据中使用,其他不要用
|
1960
|
+
move_insert=True, # 先删除,再插入
|
1961
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1962
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1963
|
+
count=None,
|
1964
|
+
filename=None, # 用来追踪处理进度
|
1965
|
+
reset_id=True, # 是否重置自增列
|
1966
|
+
set_typ=set_typ,
|
1967
|
+
)
|
1711
1968
|
return True
|
1712
1969
|
|
1713
1970
|
@try_except
|
@@ -1877,6 +2134,15 @@ class MysqlDatasQuery:
|
|
1877
2134
|
main_key=None, # 指定索引列, 通常用日期列,默认会设置日期为索引
|
1878
2135
|
set_typ=set_typ, # 指定数据类型
|
1879
2136
|
)
|
2137
|
+
company_engine.dict_to_mysql(
|
2138
|
+
db_name=db_name,
|
2139
|
+
table_name=table_name,
|
2140
|
+
dict_data=new_dict,
|
2141
|
+
unique_main_key=None,
|
2142
|
+
icm_update=['场次id'], # 唯一组合键
|
2143
|
+
main_key=None, # 指定索引列, 通常用日期列,默认会设置日期为索引
|
2144
|
+
set_typ=set_typ, # 指定数据类型
|
2145
|
+
)
|
1880
2146
|
return True
|
1881
2147
|
|
1882
2148
|
# @try_except
|
@@ -2206,8 +2472,20 @@ class MysqlDatasQuery:
|
|
2206
2472
|
count=None,
|
2207
2473
|
filename=None, # 用来追踪处理进度
|
2208
2474
|
reset_id=True, # 是否重置自增列
|
2209
|
-
set_typ=set_typ
|
2210
|
-
|
2475
|
+
set_typ=set_typ
|
2476
|
+
)
|
2477
|
+
company_engine.df_to_mysql(
|
2478
|
+
df=df,
|
2479
|
+
db_name=db_name,
|
2480
|
+
table_name=table_name,
|
2481
|
+
# icm_update=['日期', '店铺名称', '营销场景', '花费', '展现量', '点击量'], # 增量更新, 在聚合数据中使用,其他不要用
|
2482
|
+
move_insert=True, # 先删除,再插入
|
2483
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2484
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2485
|
+
count=None,
|
2486
|
+
filename=None, # 用来追踪处理进度
|
2487
|
+
reset_id=True, # 是否重置自增列
|
2488
|
+
set_typ=set_typ
|
2211
2489
|
)
|
2212
2490
|
return True
|
2213
2491
|
|
@@ -2312,6 +2590,14 @@ class MysqlDatasQuery:
|
|
2312
2590
|
# unique_main_key=None,
|
2313
2591
|
# set_typ=set_typ,
|
2314
2592
|
# )
|
2593
|
+
# company_engine.dict_to_mysql(
|
2594
|
+
# db_name=db_name,
|
2595
|
+
# table_name=table_name,
|
2596
|
+
# dict_data=new_dict,
|
2597
|
+
# icm_update=['日期', '店铺名称', 'spu_id', '商品款号'],
|
2598
|
+
# unique_main_key=None,
|
2599
|
+
# set_typ=set_typ,
|
2600
|
+
# )
|
2315
2601
|
m_engine.df_to_mysql(
|
2316
2602
|
df=df,
|
2317
2603
|
db_name=db_name,
|
@@ -2323,8 +2609,20 @@ class MysqlDatasQuery:
|
|
2323
2609
|
count=None,
|
2324
2610
|
filename=None, # 用来追踪处理进度
|
2325
2611
|
reset_id=True, # 是否重置自增列
|
2326
|
-
set_typ=set_typ
|
2327
|
-
|
2612
|
+
set_typ=set_typ
|
2613
|
+
)
|
2614
|
+
company_engine.df_to_mysql(
|
2615
|
+
df=df,
|
2616
|
+
db_name=db_name,
|
2617
|
+
table_name=table_name,
|
2618
|
+
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
2619
|
+
move_insert=True, # 先删除,再插入
|
2620
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2621
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2622
|
+
count=None,
|
2623
|
+
filename=None, # 用来追踪处理进度
|
2624
|
+
reset_id=True, # 是否重置自增列
|
2625
|
+
set_typ=set_typ
|
2328
2626
|
)
|
2329
2627
|
return True
|
2330
2628
|
|
@@ -2376,8 +2674,20 @@ class MysqlDatasQuery:
|
|
2376
2674
|
count=None,
|
2377
2675
|
filename=None, # 用来追踪处理进度
|
2378
2676
|
reset_id=True, # 是否重置自增列
|
2379
|
-
set_typ=set_typ
|
2380
|
-
|
2677
|
+
set_typ=set_typ
|
2678
|
+
)
|
2679
|
+
company_engine.df_to_mysql(
|
2680
|
+
df=df,
|
2681
|
+
db_name=db_name,
|
2682
|
+
table_name=table_name,
|
2683
|
+
# icm_update=['日期', '人群类型', '店铺名称', '人群规模', '广告投入金额'], # 增量更新, 在聚合数据中使用,其他不要用
|
2684
|
+
move_insert=True, # 先删除,再插入
|
2685
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2686
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2687
|
+
count=None,
|
2688
|
+
filename=None, # 用来追踪处理进度
|
2689
|
+
reset_id=True, # 是否重置自增列
|
2690
|
+
set_typ=set_typ
|
2381
2691
|
)
|
2382
2692
|
return True
|
2383
2693
|
|
@@ -2491,6 +2801,19 @@ class MysqlDatasQuery:
|
|
2491
2801
|
reset_id=True, # 是否重置自增列
|
2492
2802
|
set_typ=set_typ,
|
2493
2803
|
)
|
2804
|
+
company_engine.df_to_mysql(
|
2805
|
+
df=df,
|
2806
|
+
db_name=db_name,
|
2807
|
+
table_name=table_name,
|
2808
|
+
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
2809
|
+
move_insert=True, # 先删除,再插入
|
2810
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2811
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2812
|
+
count=None,
|
2813
|
+
filename=None, # 用来追踪处理进度
|
2814
|
+
reset_id=True, # 是否重置自增列
|
2815
|
+
set_typ=set_typ,
|
2816
|
+
)
|
2494
2817
|
return True
|
2495
2818
|
|
2496
2819
|
@try_except
|
@@ -2902,6 +3225,19 @@ class MysqlDatasQuery:
|
|
2902
3225
|
reset_id=True, # 是否重置自增列
|
2903
3226
|
set_typ=set_typ,
|
2904
3227
|
)
|
3228
|
+
company_engine.df_to_mysql(
|
3229
|
+
df=df,
|
3230
|
+
db_name=db_name,
|
3231
|
+
table_name=table_name,
|
3232
|
+
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
3233
|
+
move_insert=True, # 先删除,再插入
|
3234
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
3235
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
3236
|
+
count=None,
|
3237
|
+
filename=None, # 用来追踪处理进度
|
3238
|
+
reset_id=True, # 是否重置自增列
|
3239
|
+
set_typ=set_typ,
|
3240
|
+
)
|
2905
3241
|
return True
|
2906
3242
|
|
2907
3243
|
# @try_except
|
@@ -3012,6 +3348,19 @@ class MysqlDatasQuery:
|
|
3012
3348
|
reset_id=True, # 是否重置自增列
|
3013
3349
|
set_typ=set_typ,
|
3014
3350
|
)
|
3351
|
+
company_engine.df_to_mysql(
|
3352
|
+
df=df,
|
3353
|
+
db_name=db_name,
|
3354
|
+
table_name=table_name,
|
3355
|
+
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
3356
|
+
move_insert=True, # 先删除,再插入
|
3357
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
3358
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
3359
|
+
count=None,
|
3360
|
+
filename=None, # 用来追踪处理进度
|
3361
|
+
reset_id=True, # 是否重置自增列
|
3362
|
+
set_typ=set_typ,
|
3363
|
+
)
|
3015
3364
|
return True
|
3016
3365
|
|
3017
3366
|
# @try_except
|
@@ -3083,6 +3432,19 @@ class MysqlDatasQuery:
|
|
3083
3432
|
reset_id=True, # 是否重置自增列
|
3084
3433
|
set_typ=set_typ,
|
3085
3434
|
)
|
3435
|
+
company_engine.df_to_mysql(
|
3436
|
+
df=df,
|
3437
|
+
db_name=db_name,
|
3438
|
+
table_name=table_name,
|
3439
|
+
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
3440
|
+
move_insert=True, # 先删除,再插入
|
3441
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
3442
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
3443
|
+
count=None,
|
3444
|
+
filename=None, # 用来追踪处理进度
|
3445
|
+
reset_id=True, # 是否重置自增列
|
3446
|
+
set_typ=set_typ,
|
3447
|
+
)
|
3086
3448
|
return True
|
3087
3449
|
|
3088
3450
|
|
mdbq/mysql/mysql.py
CHANGED
@@ -128,6 +128,19 @@ class MysqlUpload:
|
|
128
128
|
|
129
129
|
return wrapper
|
130
130
|
|
131
|
+
def keep_connect(self, _config, max_try: int=5):
|
132
|
+
attempts = 1
|
133
|
+
while attempts <= max_try:
|
134
|
+
try:
|
135
|
+
connection = pymysql.connect(**_config) # 连接数据库
|
136
|
+
return connection
|
137
|
+
except Exception as e:
|
138
|
+
print(f'连接失败,正在重试: {attempts}/{max_try} {e}')
|
139
|
+
attempts += 1
|
140
|
+
time.sleep(10)
|
141
|
+
print(f'连接失败,重试次数超限')
|
142
|
+
return None
|
143
|
+
|
131
144
|
def cover_doc_dtypes(self, dict_data):
|
132
145
|
""" 清理字典键值 并转换数据类型 """
|
133
146
|
if not dict_data:
|
@@ -201,7 +214,10 @@ class MysqlUpload:
|
|
201
214
|
print(f'dict_data 中"数据主体"键不能为空')
|
202
215
|
return
|
203
216
|
|
204
|
-
connection = pymysql.connect(**self.config) # 连接数据库
|
217
|
+
# connection = pymysql.connect(**self.config) # 连接数据库
|
218
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
219
|
+
if not connection:
|
220
|
+
return
|
205
221
|
with connection.cursor() as cursor:
|
206
222
|
cursor.execute(f"SHOW DATABASES LIKE '{db_name}'") # 检查数据库是否存在
|
207
223
|
database_exists = cursor.fetchone()
|
@@ -219,7 +235,10 @@ class MysqlUpload:
|
|
219
235
|
print(f"创建Database: {db_name}")
|
220
236
|
|
221
237
|
self.config.update({'database': db_name}) # 添加更新 config 字段
|
222
|
-
connection = pymysql.connect(**self.config) # 重新连接数据库
|
238
|
+
# connection = pymysql.connect(**self.config) # 重新连接数据库
|
239
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
240
|
+
if not connection:
|
241
|
+
return
|
223
242
|
with connection.cursor() as cursor:
|
224
243
|
# 1. 查询表, 不存在则创建一个空表
|
225
244
|
sql = "SHOW TABLES LIKE %s;" # 有特殊字符不需转义
|
@@ -362,7 +381,10 @@ class MysqlUpload:
|
|
362
381
|
except Exception as e:
|
363
382
|
print(f'{table_name} 将数据按年/月保存(cut_data),但在转换日期时报错 -> {e}')
|
364
383
|
|
365
|
-
connection = pymysql.connect(**self.config) # 连接数据库
|
384
|
+
# connection = pymysql.connect(**self.config) # 连接数据库
|
385
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
386
|
+
if not connection:
|
387
|
+
return
|
366
388
|
with connection.cursor() as cursor:
|
367
389
|
cursor.execute(f"SHOW DATABASES LIKE '{db_name}'") # 检查数据库是否存在
|
368
390
|
database_exists = cursor.fetchone()
|
@@ -380,7 +402,10 @@ class MysqlUpload:
|
|
380
402
|
print(f"创建Database: {db_name}")
|
381
403
|
|
382
404
|
self.config.update({'database': db_name}) # 添加更新 config 字段
|
383
|
-
connection = pymysql.connect(**self.config) # 重新连接数据库
|
405
|
+
# connection = pymysql.connect(**self.config) # 重新连接数据库
|
406
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
407
|
+
if not connection:
|
408
|
+
return
|
384
409
|
with connection.cursor() as cursor:
|
385
410
|
# 1. 查询表, 不存在则创建一个空表
|
386
411
|
sql = "SHOW TABLES LIKE %s;" # 有特殊字符不需转义
|
@@ -723,7 +748,10 @@ class MysqlUpload:
|
|
723
748
|
# 确保传进来的 set_typ 键存在于实际的 df 列才 update
|
724
749
|
[dtypes.update({k: inside_v}) for inside_k, inside_v in set_typ.items() if k == inside_k]
|
725
750
|
|
726
|
-
connection = pymysql.connect(**self.config) # 连接数据库
|
751
|
+
# connection = pymysql.connect(**self.config) # 连接数据库
|
752
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
753
|
+
if not connection:
|
754
|
+
return
|
727
755
|
with connection.cursor() as cursor:
|
728
756
|
cursor.execute(f"SHOW DATABASES LIKE '{db_name}'") # 检查数据库是否存在
|
729
757
|
database_exists = cursor.fetchone()
|
@@ -741,7 +769,10 @@ class MysqlUpload:
|
|
741
769
|
print(f"创建Database: {db_name}")
|
742
770
|
|
743
771
|
self.config.update({'database': db_name}) # 添加更新 config 字段
|
744
|
-
connection = pymysql.connect(**self.config) # 重新连接数据库
|
772
|
+
# connection = pymysql.connect(**self.config) # 重新连接数据库
|
773
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
774
|
+
if not connection:
|
775
|
+
return
|
745
776
|
with connection.cursor() as cursor:
|
746
777
|
# 1. 查询表, 不存在则创建一个空表
|
747
778
|
sql = "SHOW TABLES LIKE %s;" # 有特殊字符不需转义
|
@@ -1017,7 +1048,10 @@ class MysqlUpload:
|
|
1017
1048
|
if not filename:
|
1018
1049
|
print(f'未指定文件名: filename')
|
1019
1050
|
return
|
1020
|
-
connection = pymysql.connect(**self.config) # 连接数据库
|
1051
|
+
# connection = pymysql.connect(**self.config) # 连接数据库
|
1052
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1053
|
+
if not connection:
|
1054
|
+
return
|
1021
1055
|
# try:
|
1022
1056
|
with connection.cursor() as cursor:
|
1023
1057
|
cursor.execute(f"SHOW DATABASES LIKE '{db_name}'") # 检查数据库是否存在
|
@@ -1026,7 +1060,10 @@ class MysqlUpload:
|
|
1026
1060
|
print(f"Database {db_name} 数据库不存在")
|
1027
1061
|
return
|
1028
1062
|
self.config.update({'database': db_name})
|
1029
|
-
connection = pymysql.connect(**self.config) # 重新连接数据库
|
1063
|
+
# connection = pymysql.connect(**self.config) # 重新连接数据库
|
1064
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1065
|
+
if not connection:
|
1066
|
+
return
|
1030
1067
|
with connection.cursor() as cursor:
|
1031
1068
|
# 1. 查询表
|
1032
1069
|
sql = "SHOW TABLES LIKE %s;" # 有特殊字符不需转义
|
@@ -1056,7 +1093,10 @@ class MysqlUpload:
|
|
1056
1093
|
end_date = pd.to_datetime(end_date).strftime('%Y-%m-%d')
|
1057
1094
|
df = pd.DataFrame()
|
1058
1095
|
|
1059
|
-
connection = pymysql.connect(**self.config) # 连接数据库
|
1096
|
+
# connection = pymysql.connect(**self.config) # 连接数据库
|
1097
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1098
|
+
if not connection:
|
1099
|
+
return
|
1060
1100
|
try:
|
1061
1101
|
with connection.cursor() as cursor:
|
1062
1102
|
cursor.execute(f"SHOW DATABASES LIKE '{db_name}'") # 检查数据库是否存在
|
@@ -1075,7 +1115,10 @@ class MysqlUpload:
|
|
1075
1115
|
before_time = time.time()
|
1076
1116
|
# 读取数据
|
1077
1117
|
self.config.update({'database': db_name})
|
1078
|
-
connection = pymysql.connect(**self.config) # 重新连接数据库
|
1118
|
+
# connection = pymysql.connect(**self.config) # 重新连接数据库
|
1119
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1120
|
+
if not connection:
|
1121
|
+
return
|
1079
1122
|
try:
|
1080
1123
|
with connection.cursor() as cursor:
|
1081
1124
|
# 获取指定日期范围的数据
|
@@ -1197,6 +1240,19 @@ class OptimizeDatas:
|
|
1197
1240
|
|
1198
1241
|
return wrapper
|
1199
1242
|
|
1243
|
+
def keep_connect(self, _config, max_try: int=5):
|
1244
|
+
attempts = 1
|
1245
|
+
while attempts <= max_try:
|
1246
|
+
try:
|
1247
|
+
connection = pymysql.connect(**_config) # 连接数据库
|
1248
|
+
return connection
|
1249
|
+
except Exception as e:
|
1250
|
+
print(f'连接失败,正在重试: {attempts}/{max_try} {e}')
|
1251
|
+
attempts += 1
|
1252
|
+
time.sleep(10)
|
1253
|
+
print(f'连接失败,重试次数超限')
|
1254
|
+
return None
|
1255
|
+
|
1200
1256
|
def optimize_list(self):
|
1201
1257
|
"""
|
1202
1258
|
更新多个数据库 移除冗余数据
|
@@ -1243,7 +1299,10 @@ class OptimizeDatas:
|
|
1243
1299
|
# if '店铺指标' not in table_name:
|
1244
1300
|
# continue
|
1245
1301
|
self.config.update({'database': self.db_name}) # 添加更新 config 字段
|
1246
|
-
self.connection = pymysql.connect(**self.config)
|
1302
|
+
# self.connection = pymysql.connect(**self.config)
|
1303
|
+
self.connection = self.keep_connect(_config=self.config, max_try=5)
|
1304
|
+
if not self.connection:
|
1305
|
+
return
|
1247
1306
|
with self.connection.cursor() as cursor:
|
1248
1307
|
sql = f"SELECT 1 FROM `{table_name}` LIMIT 1"
|
1249
1308
|
# print(sql)
|
@@ -1395,7 +1454,10 @@ class OptimizeDatas:
|
|
1395
1454
|
|
1396
1455
|
def database_list(self):
|
1397
1456
|
""" 获取所有数据库 """
|
1398
|
-
connection = pymysql.connect(**self.config) # 连接数据库
|
1457
|
+
# connection = pymysql.connect(**self.config) # 连接数据库
|
1458
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1459
|
+
if not connection:
|
1460
|
+
return
|
1399
1461
|
with connection.cursor() as cursor:
|
1400
1462
|
cursor.execute("SHOW DATABASES")
|
1401
1463
|
databases = cursor.fetchall() # 获取所有数据库的结果
|
@@ -1404,7 +1466,10 @@ class OptimizeDatas:
|
|
1404
1466
|
|
1405
1467
|
def table_list(self, db_name):
|
1406
1468
|
""" 获取指定数据库的所有数据表 """
|
1407
|
-
connection = pymysql.connect(**self.config) # 连接数据库
|
1469
|
+
# connection = pymysql.connect(**self.config) # 连接数据库
|
1470
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1471
|
+
if not connection:
|
1472
|
+
return
|
1408
1473
|
try:
|
1409
1474
|
with connection.cursor() as cursor:
|
1410
1475
|
cursor.execute(f"SHOW DATABASES LIKE '{db_name}'") # 检查数据库是否存在
|
@@ -1420,7 +1485,10 @@ class OptimizeDatas:
|
|
1420
1485
|
connection.close() # 断开连接
|
1421
1486
|
|
1422
1487
|
self.config.update({'database': db_name}) # 添加更新 config 字段
|
1423
|
-
connection = pymysql.connect(**self.config) # 重新连接数据库
|
1488
|
+
# connection = pymysql.connect(**self.config) # 重新连接数据库
|
1489
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1490
|
+
if not connection:
|
1491
|
+
return
|
1424
1492
|
with connection.cursor() as cursor:
|
1425
1493
|
cursor.execute("SHOW TABLES")
|
1426
1494
|
tables = cursor.fetchall() # 获取所有数据表
|
@@ -1432,7 +1500,10 @@ class OptimizeDatas:
|
|
1432
1500
|
获取指定数据表的数据, 按天获取
|
1433
1501
|
"""
|
1434
1502
|
self.config.update({'database': db_name}) # 添加更新 config 字段
|
1435
|
-
connection = pymysql.connect(**self.config)
|
1503
|
+
# connection = pymysql.connect(**self.config)
|
1504
|
+
connection = self.keep_connect(_config=self.config, max_try=5)
|
1505
|
+
if not connection:
|
1506
|
+
return
|
1436
1507
|
try:
|
1437
1508
|
with connection.cursor() as cursor:
|
1438
1509
|
sql = f"SELECT * FROM `{table_name}` WHERE {'日期'} BETWEEN '%s' AND '%s'" % (date, date)
|
@@ -1465,7 +1536,10 @@ class OptimizeDatas:
|
|
1465
1536
|
for table_dict in tables:
|
1466
1537
|
for key, table_name in table_dict.items():
|
1467
1538
|
self.config.update({'database': self.db_name}) # 添加更新 config 字段
|
1468
|
-
self.connection = pymysql.connect(**self.config)
|
1539
|
+
# self.connection = pymysql.connect(**self.config)
|
1540
|
+
self.connection = self.keep_connect(_config=self.config, max_try=5)
|
1541
|
+
if not self.connection:
|
1542
|
+
return
|
1469
1543
|
with self.connection.cursor() as cursor:
|
1470
1544
|
cursor.execute(f"SHOW FULL COLUMNS FROM `{table_name}`") # 查询数据表的列信息
|
1471
1545
|
columns = cursor.fetchall()
|
mdbq/spider/aikucun.py
CHANGED
@@ -47,23 +47,55 @@ else:
|
|
47
47
|
Share_Path = str(pathlib.Path('/Volumes/时尚事业部/01.运营部/天猫报表')) # 共享文件根目录
|
48
48
|
Source_Path = str(pathlib.Path(Data_Path, '原始文件2'))
|
49
49
|
upload_path = os.path.join(D_PATH, '数据上传中心') # 此目录位于下载文件夹
|
50
|
+
|
51
|
+
m_engine = mysql.MysqlUpload(username='', password='', host='', port=0, charset='utf8mb4')
|
52
|
+
company_engine = mysql.MysqlUpload(username='', password='', host='', port=0, charset='utf8mb4')
|
53
|
+
|
50
54
|
if socket.gethostname() == 'company' or socket.gethostname() == 'Mac2.local':
|
51
55
|
conf = myconfig.main()
|
56
|
+
conf_data = conf['Windows']['xigua_lx']['mysql']['remoto']
|
57
|
+
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
58
|
+
m_engine = mysql.MysqlUpload(
|
59
|
+
username=username,
|
60
|
+
password=password,
|
61
|
+
host=host,
|
62
|
+
port=port,
|
63
|
+
charset='utf8mb4'
|
64
|
+
)
|
52
65
|
conf_data = conf['Windows']['company']['mysql']['local']
|
53
|
-
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data[
|
54
|
-
|
66
|
+
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
67
|
+
company_engine = mysql.MysqlUpload(
|
68
|
+
username=username,
|
69
|
+
password=password,
|
70
|
+
host=host,
|
71
|
+
port=port,
|
72
|
+
charset='utf8mb4'
|
73
|
+
)
|
74
|
+
targe_host = 'company'
|
75
|
+
|
55
76
|
else:
|
56
77
|
conf = myconfig.main()
|
78
|
+
|
79
|
+
conf_data = conf['Windows']['company']['mysql']['remoto']
|
80
|
+
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
81
|
+
company_engine = mysql.MysqlUpload(
|
82
|
+
username=username,
|
83
|
+
password=password,
|
84
|
+
host=host,
|
85
|
+
port=port,
|
86
|
+
charset='utf8mb4'
|
87
|
+
)
|
88
|
+
|
57
89
|
conf_data = conf['Windows']['xigua_lx']['mysql']['local']
|
58
|
-
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data[
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
90
|
+
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
91
|
+
m_engine = mysql.MysqlUpload(
|
92
|
+
username=username,
|
93
|
+
password=password,
|
94
|
+
host=host,
|
95
|
+
port=port,
|
96
|
+
charset='utf8mb4'
|
97
|
+
)
|
98
|
+
targe_host = 'xigua_lx'
|
67
99
|
|
68
100
|
|
69
101
|
def get_cookie_aikucun():
|
@@ -382,6 +414,14 @@ class AikuCun:
|
|
382
414
|
unique_main_key=None,
|
383
415
|
set_typ=set_typ,
|
384
416
|
)
|
417
|
+
company_engine.dict_to_mysql(
|
418
|
+
db_name='爱库存2',
|
419
|
+
table_name='商品spu榜单',
|
420
|
+
dict_data=new_dict,
|
421
|
+
icm_update=['日期', '店铺名称', 'spu_id', '商品款号'],
|
422
|
+
unique_main_key=None,
|
423
|
+
set_typ=set_typ,
|
424
|
+
)
|
385
425
|
|
386
426
|
# m_engine.df_to_mysql(
|
387
427
|
# df=df,
|
@@ -396,6 +436,19 @@ class AikuCun:
|
|
396
436
|
# reset_id=False, # 是否重置自增列
|
397
437
|
# set_typ=set_typ,
|
398
438
|
# )
|
439
|
+
# company_engine.df_to_mysql(
|
440
|
+
# df=df,
|
441
|
+
# db_name='爱库存2',
|
442
|
+
# table_name='商品spu榜单',
|
443
|
+
# icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
444
|
+
# move_insert=False, # 先删除,再插入
|
445
|
+
# df_sql=True, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
446
|
+
# drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
447
|
+
# count=None,
|
448
|
+
# filename=None, # 用来追踪处理进度
|
449
|
+
# reset_id=False, # 是否重置自增列
|
450
|
+
# set_typ=set_typ,
|
451
|
+
# )
|
399
452
|
|
400
453
|
new_name = f'爱库存_商品榜单_spu_{date}_{date}.csv'
|
401
454
|
df.to_csv(os.path.join(root, new_name), encoding='utf-8_sig', index=False)
|
@@ -5,7 +5,7 @@ mdbq/aggregation/aggregation.py,sha256=-yzApnlqSN2L0E1YMu5ml-W827qpKQvWPCOI7jj2k
|
|
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=4C9BmMUV4x1YvezIySO5Nh8tqGqg1z4GVnuYDGU5OJs,167595
|
9
9
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
10
10
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
11
11
|
mdbq/clean/__init__.py,sha256=A1d6x3L27j4NtLgiFV5TANwEkLuaDfPHDQNrPBbNWtU,41
|
@@ -26,7 +26,7 @@ mdbq/log/mylogger.py,sha256=oaT7Bp-Hb9jZt52seP3ISUuxVcI19s4UiqTeouScBO0,3258
|
|
26
26
|
mdbq/mongo/__init__.py,sha256=SILt7xMtQIQl_m-ik9WLtJSXIVf424iYgCfE_tnQFbw,13
|
27
27
|
mdbq/mongo/mongo.py,sha256=v9qvrp6p1ZRWuPpbSilqveiE0FEcZF7U5xUPI0RN4xs,31880
|
28
28
|
mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
29
|
-
mdbq/mysql/mysql.py,sha256=
|
29
|
+
mdbq/mysql/mysql.py,sha256=pTeZD0KgVNJnRLaMXP11wz8lBBq2_xkAqIuoRmnEMWA,85259
|
30
30
|
mdbq/mysql/recheck_mysql.py,sha256=rgTpvDMWYTyEn7UQdlig-pdXDluTgiU8JG6lkMh8DV0,8665
|
31
31
|
mdbq/mysql/s_query.py,sha256=MbIprZ4yJDAZ9AahZPzl7hqS695Vs0P-AJNwAtA_EEc,9287
|
32
32
|
mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
|
@@ -43,8 +43,8 @@ mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,
|
|
43
43
|
mdbq/req_post/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
44
44
|
mdbq/req_post/req_tb.py,sha256=qg7pet73IgKGmCwxaeUyImJIoeK_pBQT9BBKD7fkBNg,36160
|
45
45
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
46
|
-
mdbq/spider/aikucun.py,sha256=
|
47
|
-
mdbq-3.3.
|
48
|
-
mdbq-3.3.
|
49
|
-
mdbq-3.3.
|
50
|
-
mdbq-3.3.
|
46
|
+
mdbq/spider/aikucun.py,sha256=BKVa0xbTkyhIH5kQgOdyPDtwFPScbMNAFYup_-fFF9Y,24809
|
47
|
+
mdbq-3.3.4.dist-info/METADATA,sha256=5HCgLOtVbO2JXkq0HhNkTOo2wqWf4MFVh78NWT_ruPk,243
|
48
|
+
mdbq-3.3.4.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
49
|
+
mdbq-3.3.4.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
50
|
+
mdbq-3.3.4.dist-info/RECORD,,
|
File without changes
|