mdbq 3.0.2__py3-none-any.whl → 3.0.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/aggregation.py +1 -7
- mdbq/aggregation/query_data.py +177 -123
- mdbq/dataframe/converter.py +3 -3
- mdbq/mysql/mysql.py +7 -37
- {mdbq-3.0.2.dist-info → mdbq-3.0.4.dist-info}/METADATA +1 -1
- {mdbq-3.0.2.dist-info → mdbq-3.0.4.dist-info}/RECORD +8 -8
- {mdbq-3.0.2.dist-info → mdbq-3.0.4.dist-info}/WHEEL +0 -0
- {mdbq-3.0.2.dist-info → mdbq-3.0.4.dist-info}/top_level.txt +0 -0
mdbq/aggregation/aggregation.py
CHANGED
@@ -1239,12 +1239,6 @@ def test():
|
|
1239
1239
|
# os.remove(os.path.join(root, name))
|
1240
1240
|
# results.append(df)
|
1241
1241
|
|
1242
|
-
def test2():
|
1243
|
-
file = '/Users/xigua/Downloads/商品素材中心.xlsx'
|
1244
|
-
df = pd.read_excel(file, engine='openpyxl')
|
1245
|
-
df.replace(to_replace=['0'], value='', regex=False, inplace=True)
|
1246
|
-
# print(df.head())
|
1247
|
-
df.to_excel(file, index=False, header=True, engine='openpyxl')
|
1248
1242
|
|
1249
1243
|
if __name__ == '__main__':
|
1250
1244
|
# username = 'root'
|
@@ -1259,7 +1253,7 @@ if __name__ == '__main__':
|
|
1259
1253
|
# table_name='dmp人群报表',
|
1260
1254
|
# )
|
1261
1255
|
|
1262
|
-
|
1256
|
+
test()
|
1263
1257
|
# col = 0
|
1264
1258
|
# if col:
|
1265
1259
|
# # 上传一个目录到指定数据库
|
mdbq/aggregation/query_data.py
CHANGED
@@ -172,15 +172,15 @@ class MysqlDatasQuery:
|
|
172
172
|
df=df,
|
173
173
|
db_name=db_name,
|
174
174
|
table_name=table_name,
|
175
|
-
icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
176
|
-
move_insert=
|
175
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
176
|
+
move_insert=True, # 先删除,再插入
|
177
177
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
178
178
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
179
179
|
count=None,
|
180
180
|
filename=None, # 用来追踪处理进度
|
181
181
|
reset_id=False, # 是否重置自增列
|
182
182
|
set_typ=set_typ,
|
183
|
-
|
183
|
+
|
184
184
|
)
|
185
185
|
|
186
186
|
# df_pic:商品排序索引表, 给 powerbi 中的主推款排序用的,(从上月1号到今天的总花费进行排序)
|
@@ -229,7 +229,7 @@ class MysqlDatasQuery:
|
|
229
229
|
filename=None, # 用来追踪处理进度
|
230
230
|
reset_id=False, # 是否重置自增列
|
231
231
|
set_typ=set_typ,
|
232
|
-
|
232
|
+
|
233
233
|
)
|
234
234
|
return True
|
235
235
|
|
@@ -309,15 +309,15 @@ class MysqlDatasQuery:
|
|
309
309
|
df=df,
|
310
310
|
db_name=db_name,
|
311
311
|
table_name=table_name,
|
312
|
-
icm_update=['日期', '宝贝id'], # 增量更新, 在聚合数据中使用,其他不要用
|
313
|
-
move_insert=
|
312
|
+
# icm_update=['日期', '宝贝id'], # 增量更新, 在聚合数据中使用,其他不要用
|
313
|
+
move_insert=True, # 先删除,再插入
|
314
314
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
315
315
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
316
316
|
count=None,
|
317
317
|
filename=None, # 用来追踪处理进度
|
318
318
|
reset_id=False, # 是否重置自增列
|
319
319
|
set_typ=set_typ,
|
320
|
-
|
320
|
+
|
321
321
|
)
|
322
322
|
return True
|
323
323
|
|
@@ -353,7 +353,7 @@ class MysqlDatasQuery:
|
|
353
353
|
'总成交笔数': '成交笔数',
|
354
354
|
'总成交金额': '成交金额'
|
355
355
|
}, inplace=True)
|
356
|
-
|
356
|
+
df.fillna(0, inplace=True)
|
357
357
|
df = df.astype({
|
358
358
|
'商品id': str,
|
359
359
|
'花费': float,
|
@@ -493,15 +493,15 @@ class MysqlDatasQuery:
|
|
493
493
|
df=df,
|
494
494
|
db_name=db_name,
|
495
495
|
table_name=table_name,
|
496
|
-
icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '人群名字'], # 增量更新, 在聚合数据中使用,其他不要用
|
497
|
-
move_insert=
|
496
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '人群名字'], # 增量更新, 在聚合数据中使用,其他不要用
|
497
|
+
move_insert=True, # 先删除,再插入
|
498
498
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
499
499
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
500
500
|
count=None,
|
501
501
|
filename=None, # 用来追踪处理进度
|
502
502
|
reset_id=False, # 是否重置自增列
|
503
503
|
set_typ=set_typ,
|
504
|
-
|
504
|
+
|
505
505
|
)
|
506
506
|
return True
|
507
507
|
|
@@ -538,7 +538,7 @@ class MysqlDatasQuery:
|
|
538
538
|
'总成交笔数': '成交笔数',
|
539
539
|
'总成交金额': '成交金额'
|
540
540
|
}, inplace=True)
|
541
|
-
|
541
|
+
df.fillna(0, inplace=True)
|
542
542
|
df = df.astype({
|
543
543
|
'商品id': str,
|
544
544
|
'花费': float,
|
@@ -623,15 +623,15 @@ class MysqlDatasQuery:
|
|
623
623
|
df=df,
|
624
624
|
db_name=db_name,
|
625
625
|
table_name=table_name,
|
626
|
-
icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '词类型', '词名字_词包名字',], # 增量更新, 在聚合数据中使用,其他不要用
|
627
|
-
move_insert=
|
626
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '词类型', '词名字_词包名字',], # 增量更新, 在聚合数据中使用,其他不要用
|
627
|
+
move_insert=True, # 先删除,再插入
|
628
628
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
629
629
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
630
630
|
count=None,
|
631
631
|
filename=None, # 用来追踪处理进度
|
632
632
|
reset_id=False, # 是否重置自增列
|
633
633
|
set_typ=set_typ,
|
634
|
-
|
634
|
+
|
635
635
|
)
|
636
636
|
return True
|
637
637
|
|
@@ -670,7 +670,7 @@ class MysqlDatasQuery:
|
|
670
670
|
'场景名字': '营销场景',
|
671
671
|
}, inplace=True)
|
672
672
|
df['营销场景'] = '超级直播'
|
673
|
-
|
673
|
+
df.fillna(0, inplace=True)
|
674
674
|
df = df.astype({
|
675
675
|
'花费': float,
|
676
676
|
# '点击量': int,
|
@@ -742,15 +742,15 @@ class MysqlDatasQuery:
|
|
742
742
|
df=df,
|
743
743
|
db_name=db_name,
|
744
744
|
table_name=table_name,
|
745
|
-
icm_update=['日期', '推广渠道', '营销场景', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
746
|
-
move_insert=
|
745
|
+
# icm_update=['日期', '推广渠道', '营销场景', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
746
|
+
move_insert=True, # 先删除,再插入
|
747
747
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
748
748
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
749
749
|
count=None,
|
750
750
|
filename=None, # 用来追踪处理进度
|
751
751
|
reset_id=False, # 是否重置自增列
|
752
752
|
set_typ=set_typ,
|
753
|
-
|
753
|
+
|
754
754
|
)
|
755
755
|
return True
|
756
756
|
|
@@ -780,7 +780,7 @@ class MysqlDatasQuery:
|
|
780
780
|
projection=projection,
|
781
781
|
)
|
782
782
|
df = df[df['报表类型'] == '账户']
|
783
|
-
|
783
|
+
df.fillna(value=0, inplace=True)
|
784
784
|
df.rename(columns={
|
785
785
|
'消耗': '花费',
|
786
786
|
'宝贝加购数': '加购量',
|
@@ -850,15 +850,15 @@ class MysqlDatasQuery:
|
|
850
850
|
df=df,
|
851
851
|
db_name=db_name,
|
852
852
|
table_name=table_name,
|
853
|
-
icm_update=['日期', '报表类型', '推广渠道', '营销场景', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
854
|
-
move_insert=
|
853
|
+
# icm_update=['日期', '报表类型', '推广渠道', '营销场景', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
854
|
+
move_insert=True, # 先删除,再插入
|
855
855
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
856
856
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
857
857
|
count=None,
|
858
858
|
filename=None, # 用来追踪处理进度
|
859
859
|
reset_id=False, # 是否重置自增列
|
860
860
|
set_typ=set_typ,
|
861
|
-
|
861
|
+
|
862
862
|
)
|
863
863
|
return True
|
864
864
|
|
@@ -913,7 +913,7 @@ class MysqlDatasQuery:
|
|
913
913
|
filename=None, # 用来追踪处理进度
|
914
914
|
reset_id=False, # 是否重置自增列
|
915
915
|
set_typ=set_typ,
|
916
|
-
|
916
|
+
|
917
917
|
)
|
918
918
|
return True
|
919
919
|
|
@@ -971,7 +971,7 @@ class MysqlDatasQuery:
|
|
971
971
|
filename=None, # 用来追踪处理进度
|
972
972
|
reset_id=False, # 是否重置自增列
|
973
973
|
set_typ=set_typ,
|
974
|
-
|
974
|
+
|
975
975
|
)
|
976
976
|
return True
|
977
977
|
|
@@ -1045,15 +1045,15 @@ class MysqlDatasQuery:
|
|
1045
1045
|
df=df,
|
1046
1046
|
db_name=db_name,
|
1047
1047
|
table_name=table_name,
|
1048
|
-
icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
|
1049
|
-
move_insert=
|
1048
|
+
# icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
|
1049
|
+
move_insert=True, # 先删除,再插入
|
1050
1050
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1051
1051
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1052
1052
|
count=None,
|
1053
1053
|
filename=None, # 用来追踪处理进度
|
1054
1054
|
reset_id=False, # 是否重置自增列
|
1055
1055
|
set_typ=set_typ,
|
1056
|
-
|
1056
|
+
|
1057
1057
|
)
|
1058
1058
|
return True
|
1059
1059
|
|
@@ -1101,7 +1101,7 @@ class MysqlDatasQuery:
|
|
1101
1101
|
filename=None, # 用来追踪处理进度
|
1102
1102
|
reset_id=False, # 是否重置自增列
|
1103
1103
|
set_typ=set_typ,
|
1104
|
-
|
1104
|
+
|
1105
1105
|
)
|
1106
1106
|
return True
|
1107
1107
|
|
@@ -1177,15 +1177,15 @@ class MysqlDatasQuery:
|
|
1177
1177
|
df=df,
|
1178
1178
|
db_name=db_name,
|
1179
1179
|
table_name=table_name,
|
1180
|
-
icm_update=['日期', '产品线', '触发sku_id', '跟单sku_id', '花费', ], # 增量更新, 在聚合数据中使用,其他不要用
|
1181
|
-
move_insert=
|
1180
|
+
# icm_update=['日期', '产品线', '触发sku_id', '跟单sku_id', '花费', ], # 增量更新, 在聚合数据中使用,其他不要用
|
1181
|
+
move_insert=True, # 先删除,再插入
|
1182
1182
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1183
1183
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1184
1184
|
count=None,
|
1185
1185
|
filename=None, # 用来追踪处理进度
|
1186
1186
|
reset_id=False, # 是否重置自增列
|
1187
1187
|
set_typ=set_typ,
|
1188
|
-
|
1188
|
+
|
1189
1189
|
)
|
1190
1190
|
return True
|
1191
1191
|
|
@@ -1244,15 +1244,15 @@ class MysqlDatasQuery:
|
|
1244
1244
|
df=df,
|
1245
1245
|
db_name=db_name,
|
1246
1246
|
table_name=table_name,
|
1247
|
-
icm_update=['日期', '产品线', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
1248
|
-
move_insert=
|
1247
|
+
# icm_update=['日期', '产品线', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
1248
|
+
move_insert=True, # 先删除,再插入
|
1249
1249
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1250
1250
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1251
1251
|
count=None,
|
1252
1252
|
filename=None, # 用来追踪处理进度
|
1253
1253
|
reset_id=False, # 是否重置自增列
|
1254
1254
|
set_typ=set_typ,
|
1255
|
-
|
1255
|
+
|
1256
1256
|
)
|
1257
1257
|
return True
|
1258
1258
|
|
@@ -1342,15 +1342,15 @@ class MysqlDatasQuery:
|
|
1342
1342
|
df=df,
|
1343
1343
|
db_name=db_name,
|
1344
1344
|
table_name=table_name,
|
1345
|
-
icm_update=['日期', '产品线', '搜索词', '关键词', '展现数', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
1346
|
-
move_insert=
|
1345
|
+
# icm_update=['日期', '产品线', '搜索词', '关键词', '展现数', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
1346
|
+
move_insert=True, # 先删除,再插入
|
1347
1347
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1348
1348
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1349
1349
|
count=None,
|
1350
1350
|
filename=None, # 用来追踪处理进度
|
1351
1351
|
reset_id=False, # 是否重置自增列
|
1352
1352
|
set_typ=set_typ,
|
1353
|
-
|
1353
|
+
|
1354
1354
|
)
|
1355
1355
|
return True
|
1356
1356
|
|
@@ -1412,15 +1412,15 @@ class MysqlDatasQuery:
|
|
1412
1412
|
df=df,
|
1413
1413
|
db_name=db_name,
|
1414
1414
|
table_name=table_name,
|
1415
|
-
icm_update=['日期', '商品id', '成交单量'], # 增量更新, 在聚合数据中使用,其他不要用
|
1416
|
-
move_insert=
|
1415
|
+
# icm_update=['日期', '商品id', '成交单量'], # 增量更新, 在聚合数据中使用,其他不要用
|
1416
|
+
move_insert=True, # 先删除,再插入
|
1417
1417
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1418
1418
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1419
1419
|
count=None,
|
1420
1420
|
filename=None, # 用来追踪处理进度
|
1421
1421
|
reset_id=False, # 是否重置自增列
|
1422
1422
|
set_typ=set_typ,
|
1423
|
-
|
1423
|
+
|
1424
1424
|
)
|
1425
1425
|
return True
|
1426
1426
|
|
@@ -1474,15 +1474,15 @@ class MysqlDatasQuery:
|
|
1474
1474
|
df=df,
|
1475
1475
|
db_name=db_name,
|
1476
1476
|
table_name=table_name,
|
1477
|
-
icm_update=['日期', '商品id', '成交单量'], # 增量更新, 在聚合数据中使用,其他不要用
|
1478
|
-
move_insert=
|
1477
|
+
# icm_update=['日期', '商品id', '成交单量'], # 增量更新, 在聚合数据中使用,其他不要用
|
1478
|
+
move_insert=True, # 先删除,再插入
|
1479
1479
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1480
1480
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1481
1481
|
count=None,
|
1482
1482
|
filename=None, # 用来追踪处理进度
|
1483
1483
|
reset_id=False, # 是否重置自增列
|
1484
1484
|
set_typ=set_typ,
|
1485
|
-
|
1485
|
+
|
1486
1486
|
)
|
1487
1487
|
return True
|
1488
1488
|
|
@@ -1554,15 +1554,15 @@ class MysqlDatasQuery:
|
|
1554
1554
|
df=df,
|
1555
1555
|
db_name=db_name,
|
1556
1556
|
table_name=table_name,
|
1557
|
-
icm_update=['日期', '店铺名称', '词类型', '搜索词'], # 增量更新, 在聚合数据中使用,其他不要用
|
1558
|
-
move_insert=
|
1557
|
+
# icm_update=['日期', '店铺名称', '词类型', '搜索词'], # 增量更新, 在聚合数据中使用,其他不要用
|
1558
|
+
move_insert=True, # 先删除,再插入
|
1559
1559
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1560
1560
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1561
1561
|
count=None,
|
1562
1562
|
filename=None, # 用来追踪处理进度
|
1563
1563
|
reset_id=False, # 是否重置自增列
|
1564
1564
|
set_typ=set_typ,
|
1565
|
-
|
1565
|
+
|
1566
1566
|
)
|
1567
1567
|
return True
|
1568
1568
|
|
@@ -1701,7 +1701,7 @@ class MysqlDatasQuery:
|
|
1701
1701
|
filename=None, # 用来追踪处理进度
|
1702
1702
|
reset_id=False, # 是否重置自增列
|
1703
1703
|
set_typ=set_typ,
|
1704
|
-
|
1704
|
+
|
1705
1705
|
)
|
1706
1706
|
return True
|
1707
1707
|
|
@@ -1710,6 +1710,14 @@ class MysqlDatasQuery:
|
|
1710
1710
|
"""
|
1711
1711
|
汇总各个店铺的推广数据,按日汇总
|
1712
1712
|
"""
|
1713
|
+
df_tm = pd.DataFrame() # 天猫营销场景
|
1714
|
+
df_tb = pd.DataFrame() # 淘宝营销场景
|
1715
|
+
df_tb_qzt = pd.DataFrame() # 淘宝全站推广
|
1716
|
+
df_tm_pxb = pd.DataFrame() # 天猫品销宝
|
1717
|
+
df_tm_living = pd.DataFrame() # 天猫超级直播
|
1718
|
+
df_jd = pd.DataFrame() # 京东推广
|
1719
|
+
df_jd_qzyx = pd.DataFrame() # 京东全站推广
|
1720
|
+
|
1713
1721
|
start_date, end_date = self.months_data(num=self.months)
|
1714
1722
|
projection = {
|
1715
1723
|
'日期': 1,
|
@@ -1729,18 +1737,19 @@ class MysqlDatasQuery:
|
|
1729
1737
|
end_date=end_date,
|
1730
1738
|
projection=projection,
|
1731
1739
|
)
|
1732
|
-
df_tm
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1740
|
+
if len(df_tm) > 0:
|
1741
|
+
df_tm.rename(columns={'场景名字': '营销场景'}, inplace=True)
|
1742
|
+
df_tm = df_tm.groupby(
|
1743
|
+
['日期', '店铺名称', '营销场景', '花费'],
|
1744
|
+
as_index=False).agg(
|
1745
|
+
**{
|
1746
|
+
'展现量': ('展现量', np.max),
|
1747
|
+
'点击量': ('点击量', np.max),
|
1748
|
+
'加购量': ('总购物车数', np.max),
|
1749
|
+
'成交笔数': ('总成交笔数', np.max),
|
1750
|
+
'成交金额': ('总成交金额', np.max)
|
1751
|
+
}
|
1752
|
+
)
|
1744
1753
|
|
1745
1754
|
df_tb = self.download.data_to_df(
|
1746
1755
|
db_name='推广数据_淘宝店',
|
@@ -1749,22 +1758,69 @@ class MysqlDatasQuery:
|
|
1749
1758
|
end_date=end_date,
|
1750
1759
|
projection=projection,
|
1751
1760
|
)
|
1752
|
-
|
1753
|
-
|
1754
|
-
|
1755
|
-
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1762
|
-
|
1763
|
-
|
1764
|
-
|
1761
|
+
if len(df_tb) > 0:
|
1762
|
+
df_tb.rename(columns={'场景名字': '营销场景'}, inplace=True)
|
1763
|
+
df_tb = df_tb.groupby(
|
1764
|
+
['日期', '店铺名称', '营销场景', '花费'],
|
1765
|
+
as_index=False).agg(
|
1766
|
+
**{
|
1767
|
+
'展现量': ('展现量', np.max),
|
1768
|
+
'点击量': ('点击量', np.max),
|
1769
|
+
'加购量': ('总购物车数', np.max),
|
1770
|
+
'成交笔数': ('总成交笔数', np.max),
|
1771
|
+
'成交金额': ('总成交金额', np.max)
|
1772
|
+
}
|
1773
|
+
)
|
1774
|
+
|
1775
|
+
# 天猫的全站推广包含在营销场景报表中,淘宝店不包含
|
1776
|
+
df_tb_qzt = pd.DataFrame()
|
1777
|
+
if '全站推广' not in df_tb['营销场景'].tolist():
|
1778
|
+
projection = {
|
1779
|
+
'日期': 1,
|
1780
|
+
'主体id': 1,
|
1781
|
+
'花费': 1,
|
1782
|
+
'展现量': 1,
|
1783
|
+
'点击量': 1,
|
1784
|
+
'总购物车数': 1,
|
1785
|
+
'总成交笔数': 1,
|
1786
|
+
'总成交金额': 1,
|
1787
|
+
'店铺名称': 1,
|
1765
1788
|
}
|
1766
|
-
|
1789
|
+
df_tb_qzt = self.download.data_to_df(
|
1790
|
+
db_name='推广数据_淘宝店',
|
1791
|
+
table_name='全站推广报表',
|
1792
|
+
start_date=start_date,
|
1793
|
+
end_date=end_date,
|
1794
|
+
projection=projection,
|
1795
|
+
)
|
1796
|
+
if len(df_tb_qzt) > 0:
|
1797
|
+
# 这一步是排重
|
1798
|
+
df_tb_qzt = df_tb_qzt.groupby(
|
1799
|
+
['日期', '店铺名称', '主体id', '花费'],
|
1800
|
+
as_index=False).agg(
|
1801
|
+
**{
|
1802
|
+
'展现量': ('展现量', np.max),
|
1803
|
+
'点击量': ('点击量', np.max),
|
1804
|
+
'加购量': ('总购物车数', np.max),
|
1805
|
+
'成交笔数': ('总成交笔数', np.max),
|
1806
|
+
'成交金额': ('总成交金额', np.max)
|
1807
|
+
}
|
1808
|
+
)
|
1809
|
+
# 这一步是继续聚合,因为这个报表统计的是场景维度,不需要商品维度
|
1810
|
+
df_tb_qzt = df_tb_qzt.groupby(
|
1811
|
+
['日期', '店铺名称', '花费'],
|
1812
|
+
as_index=False).agg(
|
1813
|
+
**{
|
1814
|
+
'展现量': ('展现量', np.sum),
|
1815
|
+
'点击量': ('点击量', np.sum),
|
1816
|
+
'加购量': ('总购物车数', np.sum),
|
1817
|
+
'成交笔数': ('总成交笔数', np.sum),
|
1818
|
+
'成交金额': ('总成交金额', np.sum)
|
1819
|
+
}
|
1820
|
+
)
|
1821
|
+
df_tb_qzt['营销场景'] = '全站推广'
|
1767
1822
|
|
1823
|
+
# 品销宝报表
|
1768
1824
|
projection = {
|
1769
1825
|
'日期': 1,
|
1770
1826
|
'报表类型': 1,
|
@@ -1783,20 +1839,21 @@ class MysqlDatasQuery:
|
|
1783
1839
|
end_date=end_date,
|
1784
1840
|
projection=projection,
|
1785
1841
|
)
|
1786
|
-
|
1787
|
-
|
1788
|
-
|
1789
|
-
|
1790
|
-
|
1791
|
-
|
1792
|
-
|
1793
|
-
|
1794
|
-
|
1795
|
-
|
1796
|
-
|
1797
|
-
|
1798
|
-
|
1799
|
-
|
1842
|
+
if len(df_tm_pxb) > 0:
|
1843
|
+
df_tm_pxb = df_tm_pxb[df_tm_pxb['报表类型'] == '账户']
|
1844
|
+
df_tm_pxb = df_tm_pxb.groupby(
|
1845
|
+
['日期', '店铺名称', '报表类型', '消耗'],
|
1846
|
+
as_index=False).agg(
|
1847
|
+
**{
|
1848
|
+
'展现量': ('展现量', np.max),
|
1849
|
+
'点击量': ('点击量', np.max),
|
1850
|
+
'加购量': ('宝贝加购数', np.max),
|
1851
|
+
'成交笔数': ('成交笔数', np.max),
|
1852
|
+
'成交金额': ('成交金额', np.max)
|
1853
|
+
}
|
1854
|
+
)
|
1855
|
+
df_tm_pxb.rename(columns={'报表类型': '营销场景', '消耗': '花费'}, inplace=True)
|
1856
|
+
df_tm_pxb['营销场景'] = '品销宝'
|
1800
1857
|
|
1801
1858
|
# 因为 2024.04.16及之前的营销场景报表不含超级直播,所以在此添加
|
1802
1859
|
if start_date < pd.to_datetime('2024-04-17'):
|
@@ -1831,10 +1888,6 @@ class MysqlDatasQuery:
|
|
1831
1888
|
'成交金额': ('总成交金额', np.max)
|
1832
1889
|
}
|
1833
1890
|
)
|
1834
|
-
else:
|
1835
|
-
df_tm_living = pd.DataFrame()
|
1836
|
-
else:
|
1837
|
-
df_tm_living = pd.DataFrame()
|
1838
1891
|
|
1839
1892
|
projection = {
|
1840
1893
|
'日期': 1,
|
@@ -1860,19 +1913,20 @@ class MysqlDatasQuery:
|
|
1860
1913
|
end_date=end_date,
|
1861
1914
|
projection=projection,
|
1862
1915
|
)
|
1863
|
-
|
1864
|
-
|
1865
|
-
|
1866
|
-
|
1867
|
-
|
1868
|
-
|
1869
|
-
|
1870
|
-
|
1871
|
-
|
1872
|
-
|
1873
|
-
|
1874
|
-
|
1875
|
-
|
1916
|
+
if len(df_jd) > 0:
|
1917
|
+
df_jd = df_jd.groupby(['日期', '店铺名称', '产品线', '触发sku_id', '跟单sku_id', 'spu_id', '花费', '展现数', '点击数'],
|
1918
|
+
as_index=False).agg(
|
1919
|
+
**{'直接订单行': ('直接订单行', np.max),
|
1920
|
+
'直接订单金额': ('直接订单金额', np.max),
|
1921
|
+
'成交笔数': ('总订单行', np.max),
|
1922
|
+
'成交金额': ('总订单金额', np.max),
|
1923
|
+
'直接加购数': ('直接加购数', np.max),
|
1924
|
+
'加购量': ('总加购数', np.max),
|
1925
|
+
}
|
1926
|
+
)
|
1927
|
+
df_jd = df_jd[['日期', '店铺名称', '产品线', '花费', '展现数', '点击数', '加购量', '成交笔数', '成交金额']]
|
1928
|
+
df_jd.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
|
1929
|
+
df_jd = df_jd[df_jd['花费'] > 0]
|
1876
1930
|
|
1877
1931
|
projection = {
|
1878
1932
|
'日期': 1,
|
@@ -1909,7 +1963,7 @@ class MysqlDatasQuery:
|
|
1909
1963
|
df_jd_qzyx = df_jd_qzyx[['日期', '店铺名称', '营销场景', '花费', '展现量', '点击量', '成交笔数', '成交金额']]
|
1910
1964
|
df_jd_qzyx = df_jd_qzyx[df_jd_qzyx['花费'] > 0]
|
1911
1965
|
|
1912
|
-
_datas = [item for item in [df_tm, df_tb, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
|
1966
|
+
_datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
|
1913
1967
|
df = pd.concat(_datas, axis=0, ignore_index=True)
|
1914
1968
|
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore') # 转换日期列
|
1915
1969
|
df = df.groupby(
|
@@ -1946,15 +2000,15 @@ class MysqlDatasQuery:
|
|
1946
2000
|
df=df,
|
1947
2001
|
db_name=db_name,
|
1948
2002
|
table_name=table_name,
|
1949
|
-
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
1950
|
-
move_insert=
|
2003
|
+
# icm_update=['日期', '店铺名称', '营销场景', '花费', '展现量', '点击量'], # 增量更新, 在聚合数据中使用,其他不要用
|
2004
|
+
move_insert=True, # 先删除,再插入
|
1951
2005
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1952
2006
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1953
2007
|
count=None,
|
1954
2008
|
filename=None, # 用来追踪处理进度
|
1955
2009
|
reset_id=False, # 是否重置自增列
|
1956
2010
|
set_typ=set_typ,
|
1957
|
-
|
2011
|
+
|
1958
2012
|
)
|
1959
2013
|
return True
|
1960
2014
|
|
@@ -2032,14 +2086,14 @@ class MysqlDatasQuery:
|
|
2032
2086
|
db_name=db_name,
|
2033
2087
|
table_name=table_name,
|
2034
2088
|
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
2035
|
-
move_insert=
|
2089
|
+
move_insert=True, # 先删除,再插入
|
2036
2090
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2037
2091
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2038
2092
|
count=None,
|
2039
2093
|
filename=None, # 用来追踪处理进度
|
2040
2094
|
reset_id=False, # 是否重置自增列
|
2041
2095
|
set_typ=set_typ,
|
2042
|
-
|
2096
|
+
|
2043
2097
|
)
|
2044
2098
|
return True
|
2045
2099
|
|
@@ -2084,7 +2138,7 @@ class MysqlDatasQuery:
|
|
2084
2138
|
df=df,
|
2085
2139
|
db_name=db_name,
|
2086
2140
|
table_name=table_name,
|
2087
|
-
icm_update=['日期', '人群类型', '店铺名称', '人群规模', '广告投入金额'], # 增量更新, 在聚合数据中使用,其他不要用
|
2141
|
+
# icm_update=['日期', '人群类型', '店铺名称', '人群规模', '广告投入金额'], # 增量更新, 在聚合数据中使用,其他不要用
|
2088
2142
|
move_insert=True, # 先删除,再插入
|
2089
2143
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2090
2144
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
@@ -2092,7 +2146,7 @@ class MysqlDatasQuery:
|
|
2092
2146
|
filename=None, # 用来追踪处理进度
|
2093
2147
|
reset_id=False, # 是否重置自增列
|
2094
2148
|
set_typ=set_typ,
|
2095
|
-
|
2149
|
+
|
2096
2150
|
)
|
2097
2151
|
return True
|
2098
2152
|
|
@@ -2193,14 +2247,14 @@ class MysqlDatasQuery:
|
|
2193
2247
|
db_name=db_name,
|
2194
2248
|
table_name=table_name,
|
2195
2249
|
icm_update=[], # 增量更新, 在聚合数据中使用,其他不要用
|
2196
|
-
move_insert=
|
2250
|
+
move_insert=True, # 先删除,再插入
|
2197
2251
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2198
2252
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2199
2253
|
count=None,
|
2200
2254
|
filename=None, # 用来追踪处理进度
|
2201
2255
|
reset_id=False, # 是否重置自增列
|
2202
2256
|
set_typ=set_typ,
|
2203
|
-
|
2257
|
+
|
2204
2258
|
)
|
2205
2259
|
return True
|
2206
2260
|
|
@@ -2565,7 +2619,7 @@ class MysqlDatasQuery:
|
|
2565
2619
|
df.drop(labels='宝贝id', axis=1, inplace=True)
|
2566
2620
|
|
2567
2621
|
# df.drop_duplicates(subset=['日期', '店铺名称', '商品id', '花费', '销售额'], keep='last', inplace=True, ignore_index=True)
|
2568
|
-
|
2622
|
+
df.fillna(0, inplace=True)
|
2569
2623
|
df['成本价'] = df['成本价'].astype('float64')
|
2570
2624
|
df['销售额'] = df['销售额'].astype('float64')
|
2571
2625
|
df['销售量'] = df['销售量'].astype('int64')
|
@@ -2611,7 +2665,7 @@ class MysqlDatasQuery:
|
|
2611
2665
|
filename=None, # 用来追踪处理进度
|
2612
2666
|
reset_id=False, # 是否重置自增列
|
2613
2667
|
set_typ=set_typ,
|
2614
|
-
|
2668
|
+
|
2615
2669
|
)
|
2616
2670
|
return True
|
2617
2671
|
|
@@ -2687,7 +2741,7 @@ class MysqlDatasQuery:
|
|
2687
2741
|
'自然流量曝光量': int,
|
2688
2742
|
}
|
2689
2743
|
)
|
2690
|
-
|
2744
|
+
[df[col].apply(lambda x: '0' if str(x) == '' else x) for col in df.columns.tolist()]
|
2691
2745
|
set_typ = {
|
2692
2746
|
'日期': 'date',
|
2693
2747
|
'店铺名称': 'varchar(100)',
|
@@ -2722,7 +2776,7 @@ class MysqlDatasQuery:
|
|
2722
2776
|
filename=None, # 用来追踪处理进度
|
2723
2777
|
reset_id=False, # 是否重置自增列
|
2724
2778
|
set_typ=set_typ,
|
2725
|
-
|
2779
|
+
|
2726
2780
|
)
|
2727
2781
|
return True
|
2728
2782
|
|
@@ -2762,7 +2816,7 @@ class MysqlDatasQuery:
|
|
2762
2816
|
df['毛利率'] = df.apply(
|
2763
2817
|
lambda x: round((x['成交金额'] - x['商品成本']) / x['成交金额'], 4) if x['成交金额'] > 0 else 0, axis=1)
|
2764
2818
|
df['盈亏'] = df.apply(lambda x: x['商品毛利'] - x['花费'], axis=1)
|
2765
|
-
|
2819
|
+
[df[col].apply(lambda x: '0' if str(x) == '' else x) for col in df.columns.tolist()]
|
2766
2820
|
set_typ = {
|
2767
2821
|
'日期': 'date',
|
2768
2822
|
'跟单sku_id': 'bigint',
|
@@ -2794,7 +2848,7 @@ class MysqlDatasQuery:
|
|
2794
2848
|
filename=None, # 用来追踪处理进度
|
2795
2849
|
reset_id=False, # 是否重置自增列
|
2796
2850
|
set_typ=set_typ,
|
2797
|
-
|
2851
|
+
|
2798
2852
|
)
|
2799
2853
|
return True
|
2800
2854
|
|
@@ -2853,7 +2907,7 @@ def date_table():
|
|
2853
2907
|
count=None,
|
2854
2908
|
filename=None, # 用来追踪处理进度
|
2855
2909
|
set_typ=set_typ,
|
2856
|
-
|
2910
|
+
|
2857
2911
|
)
|
2858
2912
|
|
2859
2913
|
|
@@ -2931,7 +2985,7 @@ if __name__ == '__main__':
|
|
2931
2985
|
# # 4. 清理聚合数据
|
2932
2986
|
# optimize_data.op_data(
|
2933
2987
|
# db_name_lists=['聚合数据'],
|
2934
|
-
# days=
|
2988
|
+
# days=3650,
|
2935
2989
|
# is_mongo=False,
|
2936
2990
|
# is_mysql=True,
|
2937
2991
|
# )
|
mdbq/dataframe/converter.py
CHANGED
@@ -31,8 +31,8 @@ class DataFrameConverter(object):
|
|
31
31
|
return longest_value
|
32
32
|
|
33
33
|
# dtypes = df.dtypes.apply(str).to_dict() # 将 dataframe 数据类型转为字典形式
|
34
|
-
df.replace([np.inf, -np.inf], '', inplace=True) # 清理一些非法值
|
35
|
-
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value='', regex=False, inplace=True) # 替换掉特殊字符
|
34
|
+
df.replace([np.inf, -np.inf], '0', inplace=True) # 清理一些非法值
|
35
|
+
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value='0', regex=False, inplace=True) # 替换掉特殊字符
|
36
36
|
df.replace(to_replace=[','], value='', regex=True, inplace=True)
|
37
37
|
df.replace(to_replace=['="'], value='', regex=True, inplace=True) # ="和"不可以放在一起清洗, 因为有: id=86785565
|
38
38
|
df.replace(to_replace=['"'], value='', regex=True, inplace=True)
|
@@ -88,7 +88,7 @@ class DataFrameConverter(object):
|
|
88
88
|
new_col = re.sub(r'_{2,}', '_', new_col)
|
89
89
|
new_col = re.sub(r'_+$', '', new_col)
|
90
90
|
df.rename(columns={col: new_col}, inplace=True)
|
91
|
-
|
91
|
+
df.fillna(0, inplace=True)
|
92
92
|
return df
|
93
93
|
|
94
94
|
|
mdbq/mysql/mysql.py
CHANGED
@@ -127,7 +127,7 @@ class MysqlUpload:
|
|
127
127
|
return wrapper
|
128
128
|
|
129
129
|
@try_except
|
130
|
-
def dict_to_mysql(self, db_name, table_name, dict_data, icm_update=None, main_key=None, unique_main_key=None, index_length=100, set_typ=None
|
130
|
+
def dict_to_mysql(self, db_name, table_name, dict_data, icm_update=None, main_key=None, unique_main_key=None, index_length=100, set_typ=None):
|
131
131
|
"""
|
132
132
|
插入字典数据
|
133
133
|
dict_data: 字典
|
@@ -186,22 +186,7 @@ class MysqlUpload:
|
|
186
186
|
if col_not_exist: # 数据表中不存在的列
|
187
187
|
for col in col_not_exist:
|
188
188
|
# 创建列,需转义
|
189
|
-
|
190
|
-
if dtypes[col] == 'date':
|
191
|
-
default = '2000-01-01'
|
192
|
-
elif dtypes[col] == 'datetime' or dtypes[col] == 'timestamp':
|
193
|
-
default = '2000-01-01 10:00:00'
|
194
|
-
elif 'decimal' in dtypes[col]:
|
195
|
-
default = 0.0
|
196
|
-
elif 'int' in dtypes[col]:
|
197
|
-
default = 0
|
198
|
-
elif 'varchar' in dtypes[col] or 'text' in dtypes[col]:
|
199
|
-
default = ''
|
200
|
-
elif 'year' in dtypes[col]:
|
201
|
-
default = '2000'
|
202
|
-
sql = f"ALTER TABLE `{table_name}` ADD COLUMN `{col}` {dtypes[col]} NOT NULL DEFAULT '{default}';"
|
203
|
-
else:
|
204
|
-
sql = f"ALTER TABLE `{table_name}` ADD COLUMN `{col}` {dtypes[col]} NOT NULL;"
|
189
|
+
sql = f"ALTER TABLE `{table_name}` ADD COLUMN `{col}` {dtypes[col]} NOT NULL;"
|
205
190
|
cursor.execute(sql)
|
206
191
|
print(f"添加列: {col}({dtypes[col]})") # 添加列并指定数据类型
|
207
192
|
|
@@ -377,8 +362,8 @@ class MysqlUpload:
|
|
377
362
|
|
378
363
|
def cover_df(self, df):
|
379
364
|
""" 清理 df 的值和列名 """
|
380
|
-
df.replace([np.inf, -np.inf], '', inplace=True) # 清理一些非法值
|
381
|
-
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value='', regex=False, inplace=True) # 替换掉特殊字符
|
365
|
+
df.replace([np.inf, -np.inf], '0', inplace=True) # 清理一些非法值
|
366
|
+
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value='0', regex=False, inplace=True) # 替换掉特殊字符
|
382
367
|
df.replace(to_replace=[','], value='', regex=True, inplace=True)
|
383
368
|
df.replace(to_replace=['="'], value='', regex=True, inplace=True) # ="和"不可以放在一起清洗, 因为有: id=86785565
|
384
369
|
df.replace(to_replace=['"'], value='', regex=True, inplace=True)
|
@@ -402,7 +387,7 @@ class MysqlUpload:
|
|
402
387
|
new_col = re.sub(r'_{2,}', '_', new_col)
|
403
388
|
new_col = re.sub(r'_+$', '', new_col)
|
404
389
|
df.rename(columns={col: new_col}, inplace=True)
|
405
|
-
|
390
|
+
df.fillna(0, inplace=True)
|
406
391
|
return df
|
407
392
|
|
408
393
|
def convert_df_dtypes(self, df: pd.DataFrame):
|
@@ -443,7 +428,7 @@ class MysqlUpload:
|
|
443
428
|
|
444
429
|
# @try_except
|
445
430
|
def df_to_mysql(self, df, db_name, table_name, set_typ=None, icm_update=[], move_insert=False, df_sql=False, drop_duplicates=False,
|
446
|
-
filename=None, count=None, reset_id=False
|
431
|
+
filename=None, count=None, reset_id=False):
|
447
432
|
"""
|
448
433
|
db_name: 数据库名
|
449
434
|
table_name: 表名
|
@@ -514,22 +499,7 @@ class MysqlUpload:
|
|
514
499
|
if col_not_exist: # 数据表中不存在的列
|
515
500
|
for col in col_not_exist:
|
516
501
|
# 创建列,需转义
|
517
|
-
|
518
|
-
if dtypes[col] == 'date':
|
519
|
-
default = '2000-01-01'
|
520
|
-
elif dtypes[col] == 'datetime' or dtypes[col] == 'timestamp':
|
521
|
-
default = '2000-01-01 10:00:00'
|
522
|
-
elif 'decimal' in dtypes[col]:
|
523
|
-
default = 0.0
|
524
|
-
elif 'int' in dtypes[col]:
|
525
|
-
default = 0
|
526
|
-
elif 'varchar' in dtypes[col] or 'text' in dtypes[col]:
|
527
|
-
default = ''
|
528
|
-
elif 'year' in dtypes[col]:
|
529
|
-
default = '2000'
|
530
|
-
sql = f"ALTER TABLE `{table_name}` ADD COLUMN `{col}` {dtypes[col]} NOT NULL DEFAULT '{default}';"
|
531
|
-
else:
|
532
|
-
sql = f"ALTER TABLE `{table_name}` ADD COLUMN `{col}` {dtypes[col]} NOT NULL;"
|
502
|
+
sql = f"ALTER TABLE `{table_name}` ADD COLUMN `{col}` {dtypes[col]} NOT NULL;"
|
533
503
|
cursor.execute(sql)
|
534
504
|
print(f"添加列: {col}({dtypes[col]})") # 添加列并指定数据类型
|
535
505
|
|
@@ -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=mAa4JDFsFRzsM_dFZAkNr_madBB4Ct27-5hDU-21pHM,72861
|
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=79uwiM2WqNNFxGpE2wKz742PRq-ZGgFjdOV0vgptHdY,3513
|
8
|
-
mdbq/aggregation/query_data.py,sha256=
|
8
|
+
mdbq/aggregation/query_data.py,sha256=I62eYJRf2sc_V1ZM8XApEtDmzLSLqqzIyZFnbJ5ZES4,132690
|
9
9
|
mdbq/aggregation/query_data_bak.py,sha256=r1FU0C4zjXln7oVSrRkElh4Ehl-9mYhGcq57jLbViUA,104071
|
10
10
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
11
11
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
@@ -21,13 +21,13 @@ mdbq/config/products.py,sha256=1W8FBXnnvTC29pBLI8Yp8UwTMhBvoppcJqmniT8rBGU,6295
|
|
21
21
|
mdbq/config/set_support.py,sha256=xkZCX6y9Bq1ppBpJAofld4B2YtchA7fl0eT3dx3CrSI,777
|
22
22
|
mdbq/config/update_conf.py,sha256=taL3ZqKgiVWwUrDFuaYhim9a72Hm4BHRhhDscJTziR8,4535
|
23
23
|
mdbq/dataframe/__init__.py,sha256=2HtCN8AdRj53teXDqzysC1h8aPL-mMFy561ESmhehGQ,22
|
24
|
-
mdbq/dataframe/converter.py,sha256=
|
24
|
+
mdbq/dataframe/converter.py,sha256=iNzgQOJjjoHb_wYozUh8a0qNvWA3o-u6lW3NWa7Kdps,4604
|
25
25
|
mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
|
26
26
|
mdbq/log/mylogger.py,sha256=oaT7Bp-Hb9jZt52seP3ISUuxVcI19s4UiqTeouScBO0,3258
|
27
27
|
mdbq/mongo/__init__.py,sha256=SILt7xMtQIQl_m-ik9WLtJSXIVf424iYgCfE_tnQFbw,13
|
28
28
|
mdbq/mongo/mongo.py,sha256=v9qvrp6p1ZRWuPpbSilqveiE0FEcZF7U5xUPI0RN4xs,31880
|
29
29
|
mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
30
|
-
mdbq/mysql/mysql.py,sha256=
|
30
|
+
mdbq/mysql/mysql.py,sha256=_6czRjVkAccKykQswv890JEQQ8Mu-FxD9Rg3GOUz-C4,59921
|
31
31
|
mdbq/mysql/recheck_mysql.py,sha256=rgTpvDMWYTyEn7UQdlig-pdXDluTgiU8JG6lkMh8DV0,8665
|
32
32
|
mdbq/mysql/s_query.py,sha256=fnXncwSmA7CB0ELn1a-YxYZDrYkC2Bcgnj2J4dcQ8X8,8481
|
33
33
|
mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
|
@@ -44,7 +44,7 @@ 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
46
|
mdbq/spider/aikucun.py,sha256=01qJo_Di5Kmi2lG5_HKb0OI283b1-Pgqh-nnA0pX4TY,19038
|
47
|
-
mdbq-3.0.
|
48
|
-
mdbq-3.0.
|
49
|
-
mdbq-3.0.
|
50
|
-
mdbq-3.0.
|
47
|
+
mdbq-3.0.4.dist-info/METADATA,sha256=9j8lsr7Coxk9TRjKt2MiyEs9rlg6QPV80eZWfYwzOMU,243
|
48
|
+
mdbq-3.0.4.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
49
|
+
mdbq-3.0.4.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
50
|
+
mdbq-3.0.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|