mdbq 3.0.2__tar.gz → 3.0.4__tar.gz

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.
Files changed (54) hide show
  1. {mdbq-3.0.2 → mdbq-3.0.4}/PKG-INFO +1 -1
  2. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/aggregation/aggregation.py +1 -7
  3. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/aggregation/query_data.py +177 -123
  4. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/dataframe/converter.py +3 -3
  5. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/mysql/mysql.py +7 -37
  6. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq.egg-info/PKG-INFO +1 -1
  7. {mdbq-3.0.2 → mdbq-3.0.4}/setup.py +1 -1
  8. {mdbq-3.0.2 → mdbq-3.0.4}/README.txt +0 -0
  9. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/__init__.py +0 -0
  10. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/__version__.py +0 -0
  11. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/aggregation/__init__.py +0 -0
  12. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/aggregation/df_types.py +0 -0
  13. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/aggregation/mysql_types.py +0 -0
  14. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/aggregation/optimize_data.py +0 -0
  15. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/aggregation/query_data_bak.py +0 -0
  16. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/bdup/__init__.py +0 -0
  17. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/bdup/bdup.py +0 -0
  18. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/clean/__init__.py +0 -0
  19. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/clean/clean_upload.py +0 -0
  20. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/clean/data_clean.py +0 -0
  21. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/company/__init__.py +0 -0
  22. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/company/copysh.py +0 -0
  23. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/config/__init__.py +0 -0
  24. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/config/get_myconf.py +0 -0
  25. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/config/myconfig.py +0 -0
  26. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/config/products.py +0 -0
  27. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/config/set_support.py +0 -0
  28. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/config/update_conf.py +0 -0
  29. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/dataframe/__init__.py +0 -0
  30. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/log/__init__.py +0 -0
  31. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/log/mylogger.py +0 -0
  32. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/mongo/__init__.py +0 -0
  33. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/mongo/mongo.py +0 -0
  34. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/mysql/__init__.py +0 -0
  35. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/mysql/recheck_mysql.py +0 -0
  36. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/mysql/s_query.py +0 -0
  37. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/mysql/year_month_day.py +0 -0
  38. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/other/__init__.py +0 -0
  39. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/other/porxy.py +0 -0
  40. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/other/pov_city.py +0 -0
  41. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/other/sku_picture.py +0 -0
  42. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/other/ua_sj.py +0 -0
  43. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/pbix/__init__.py +0 -0
  44. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/pbix/pbix_refresh.py +0 -0
  45. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/pbix/refresh_all.py +0 -0
  46. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/pbix/refresh_all_old.py +0 -0
  47. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/req_post/__init__.py +0 -0
  48. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/req_post/req_tb.py +0 -0
  49. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/spider/__init__.py +0 -0
  50. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq/spider/aikucun.py +0 -0
  51. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq.egg-info/SOURCES.txt +0 -0
  52. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq.egg-info/dependency_links.txt +0 -0
  53. {mdbq-3.0.2 → mdbq-3.0.4}/mdbq.egg-info/top_level.txt +0 -0
  54. {mdbq-3.0.2 → mdbq-3.0.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 3.0.2
3
+ Version: 3.0.4
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -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
- test2()
1256
+ test()
1263
1257
  # col = 0
1264
1258
  # if col:
1265
1259
  # # 上传一个目录到指定数据库
@@ -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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
320
+
321
321
  )
322
322
  return True
323
323
 
@@ -353,7 +353,7 @@ class MysqlDatasQuery:
353
353
  '总成交笔数': '成交笔数',
354
354
  '总成交金额': '成交金额'
355
355
  }, inplace=True)
356
- # df.fillna(0, inplace=True)
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
504
+
505
505
  )
506
506
  return True
507
507
 
@@ -538,7 +538,7 @@ class MysqlDatasQuery:
538
538
  '总成交笔数': '成交笔数',
539
539
  '总成交金额': '成交金额'
540
540
  }, inplace=True)
541
- # df.fillna(0, inplace=True)
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- # df.fillna(0, inplace=True)
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- # df.fillna(value=0, inplace=True)
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- default=True, # 对于空值使用默认值
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- default=True, # 对于空值使用默认值
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.rename(columns={'场景名字': '营销场景'}, inplace=True)
1733
- df_tm = df_tm.groupby(
1734
- ['日期', '店铺名称', '营销场景', '花费'],
1735
- as_index=False).agg(
1736
- **{
1737
- '展现量': ('展现量', np.max),
1738
- '点击量': ('点击量', np.max),
1739
- '加购量': ('总购物车数', np.max),
1740
- '成交笔数': ('总成交笔数', np.max),
1741
- '成交金额': ('总成交金额', np.max)
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
- # print(df_tb)
1753
- # df_tm.to_csv('/Users/xigua/Downloads/test2.csv', index=False, header=True, encoding='utf-8_sig')
1754
- # df_tb.to_csv('/Users/xigua/Downloads/test.csv', index=False, header=True, encoding='utf-8_sig')
1755
- df_tb.rename(columns={'场景名字': '营销场景'}, inplace=True)
1756
- df_tb = df_tb.groupby(
1757
- ['日期', '店铺名称', '营销场景', '花费'],
1758
- as_index=False).agg(
1759
- **{
1760
- '展现量': ('展现量', np.max),
1761
- '点击量': ('点击量', np.max),
1762
- '加购量': ('总购物车数', np.max),
1763
- '成交笔数': ('总成交笔数', np.max),
1764
- '成交金额': ('总成交金额', np.max)
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
- df_tm_pxb = df_tm_pxb[df_tm_pxb['报表类型'] == '账户']
1787
- df_tm_pxb = df_tm_pxb.groupby(
1788
- ['日期', '店铺名称', '报表类型', '消耗'],
1789
- as_index=False).agg(
1790
- **{
1791
- '展现量': ('展现量', np.max),
1792
- '点击量': ('点击量', np.max),
1793
- '加购量': ('宝贝加购数', np.max),
1794
- '成交笔数': ('成交笔数', np.max),
1795
- '成交金额': ('成交金额', np.max)
1796
- }
1797
- )
1798
- df_tm_pxb.rename(columns={'报表类型': '营销场景', '消耗': '花费'}, inplace=True)
1799
- df_tm_pxb['营销场景'] = '品销宝'
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
- df_jd = df_jd.groupby(['日期', '店铺名称', '产品线', '触发sku_id', '跟单sku_id', 'spu_id', '花费', '展现数', '点击数'],
1864
- as_index=False).agg(
1865
- **{'直接订单行': ('直接订单行', np.max),
1866
- '直接订单金额': ('直接订单金额', np.max),
1867
- '成交笔数': ('总订单行', np.max),
1868
- '成交金额': ('总订单金额', np.max),
1869
- '直接加购数': ('直接加购数', np.max),
1870
- '加购量': ('总加购数', np.max),
1871
- }
1872
- )
1873
- df_jd = df_jd[['日期', '店铺名称', '产品线', '花费', '展现数', '点击数', '加购量', '成交笔数', '成交金额']]
1874
- df_jd.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
1875
- df_jd = df_jd[df_jd['花费'] > 0]
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- default=True, # 对于空值使用默认值
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=False, # 先删除,再插入
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
- default=True, # 对于空值使用默认值
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
- # df.fillna(0, inplace=True)
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
- default=True, # 对于空值使用默认值
2668
+
2615
2669
  )
2616
2670
  return True
2617
2671
 
@@ -2687,7 +2741,7 @@ class MysqlDatasQuery:
2687
2741
  '自然流量曝光量': int,
2688
2742
  }
2689
2743
  )
2690
- # [df[col].apply(lambda x: '0' if str(x) == '' else x) for col in df.columns.tolist()]
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
- default=True, # 对于空值使用默认值
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
- # [df[col].apply(lambda x: '0' if str(x) == '' else x) for col in df.columns.tolist()]
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
- default=True, # 对于空值使用默认值
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
- default=True, # 对于空值使用默认值
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=300,
2988
+ # days=3650,
2935
2989
  # is_mongo=False,
2936
2990
  # is_mysql=True,
2937
2991
  # )
@@ -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
- # df.fillna(0, inplace=True)
91
+ df.fillna(0, inplace=True)
92
92
  return df
93
93
 
94
94
 
@@ -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, default=True):
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
- if default:
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
- # df.fillna(0, inplace=True)
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, default=None):
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
- if default:
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 3.0.2
3
+ Version: 3.0.4
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -3,7 +3,7 @@
3
3
  from setuptools import setup, find_packages
4
4
 
5
5
  setup(name='mdbq',
6
- version='3.0.2',
6
+ version='3.0.4',
7
7
  author='xigua, ',
8
8
  author_email="2587125111@qq.com",
9
9
  url='https://pypi.org/project/mdbq',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes