mdbq 3.0.1__py3-none-any.whl → 3.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1238,22 +1238,6 @@ def test():
1238
1238
  # df.to_csv(os.path.join(root, name), encoding='utf-8_sig', index=False, header=True)
1239
1239
  # os.remove(os.path.join(root, name))
1240
1240
  # results.append(df)
1241
- # df = pd.concat(results)
1242
- # df.drop_duplicates(
1243
- # subset=[
1244
- # '日期',
1245
- # '店铺名称',
1246
- # '报表类型',
1247
- # '消耗',
1248
- # '展现量',
1249
- # '点击量',
1250
- # ], keep='last', inplace=True, ignore_index=True)
1251
- # df.fillna(0, inplace=True)
1252
- # for col in df.columns.tolist():
1253
- # df[col] = df[col].apply(lambda x: 0 if str(x) == '' else x)
1254
- # path = '/Users/xigua/Downloads'
1255
- # filename = '品销宝_2024年_合并.csv'
1256
- # df.to_csv(os.path.join(path, filename), encoding='utf-8_sig', index=False, header=True)
1257
1241
 
1258
1242
 
1259
1243
  if __name__ == '__main__':
@@ -1269,17 +1253,17 @@ if __name__ == '__main__':
1269
1253
  # table_name='dmp人群报表',
1270
1254
  # )
1271
1255
 
1272
- # test()
1273
- col = 1
1274
- if col:
1275
- # 上传一个目录到指定数据库
1276
- db_name = '京东数据3'
1277
- table_name = '推广数据_全站营销'
1278
- upload_dir(
1279
- path=r'/Users/xigua/数据中心/原始文件3/京东报表/京准通_全站营销',
1280
- db_name=db_name,
1281
- collection_name=table_name,
1282
- )
1256
+ test()
1257
+ # col = 0
1258
+ # if col:
1259
+ # # 上传一个目录到指定数据库
1260
+ # db_name = '京东数据3'
1261
+ # table_name = '推广数据_全站营销'
1262
+ # upload_dir(
1263
+ # path=r'/Users/xigua/数据中心/原始文件3/京东报表/京准通_全站营销',
1264
+ # db_name=db_name,
1265
+ # collection_name=table_name,
1266
+ # )
1283
1267
 
1284
1268
 
1285
1269
 
@@ -180,6 +180,56 @@ class MysqlDatasQuery:
180
180
  filename=None, # 用来追踪处理进度
181
181
  reset_id=False, # 是否重置自增列
182
182
  set_typ=set_typ,
183
+
184
+ )
185
+
186
+ # df_pic:商品排序索引表, 给 powerbi 中的主推款排序用的,(从上月1号到今天的总花费进行排序)
187
+ today = datetime.date.today()
188
+ last_month = today - datetime.timedelta(days=30)
189
+ if last_month.month == 12:
190
+ year_my = today.year - 1
191
+ else:
192
+ year_my = today.year
193
+ # 截取 从上月1日 至 今天的花费数据, 推广款式按此数据从高到低排序(商品图+排序)
194
+ # df_pic_lin = df[df['店铺名称'] == '万里马官方旗舰店']
195
+ df_pic = df.groupby(['日期', '店铺名称', '商品id'], as_index=False).agg({'花费': 'sum'})
196
+ if len(df_pic) == 0:
197
+ return True
198
+ df_pic = df_pic[~df_pic['商品id'].isin([''])] # 指定列中删除包含空值的行
199
+ date_obj = datetime.datetime.strptime(f'{year_my}-{last_month.month}-01', '%Y-%m-%d').date()
200
+ df_pic = df_pic[(df_pic['日期'] >= date_obj)]
201
+ df_pic = df_pic.groupby(['店铺名称', '商品id'], as_index=False).agg({'花费': 'sum'})
202
+ df_pic.sort_values('花费', ascending=False, ignore_index=True, inplace=True)
203
+ df_pic.reset_index(inplace=True)
204
+ df_pic['index'] = df_pic['index'] + 100
205
+ df_pic.rename(columns={'index': '商品索引'}, inplace=True)
206
+ df_pic['商品索引'].fillna(1000, inplace=True)
207
+ df_pic.pop('花费')
208
+ p= df_pic.pop('商品索引')
209
+ df_pic.insert(loc=2, column='商品索引', value=p) # df中插入新列
210
+ df_pic['更新时间'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
211
+ set_typ = {
212
+ '商品id': 'bigint',
213
+ '店铺名称': 'varchar(100)',
214
+ '商品索引': 'smallint',
215
+ '花费': 'decimal(12,2)',
216
+ '更新时间': 'timestamp',
217
+ }
218
+ now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
219
+ print(f'{now} 正在更新: mysql ({host}:{port}) 属性设置3/商品索引表_主推排序调用')
220
+ m_engine.df_to_mysql(
221
+ df=df_pic,
222
+ db_name='属性设置3',
223
+ table_name='商品索引表_主推排序调用',
224
+ icm_update=['商品id'], # 增量更新, 在聚合数据中使用,其他不要用
225
+ move_insert=False, # 先删除,再插入
226
+ df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
227
+ drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
228
+ count=None,
229
+ filename=None, # 用来追踪处理进度
230
+ reset_id=False, # 是否重置自增列
231
+ set_typ=set_typ,
232
+
183
233
  )
184
234
  return True
185
235
 
@@ -267,6 +317,7 @@ class MysqlDatasQuery:
267
317
  filename=None, # 用来追踪处理进度
268
318
  reset_id=False, # 是否重置自增列
269
319
  set_typ=set_typ,
320
+
270
321
  )
271
322
  return True
272
323
 
@@ -450,6 +501,7 @@ class MysqlDatasQuery:
450
501
  filename=None, # 用来追踪处理进度
451
502
  reset_id=False, # 是否重置自增列
452
503
  set_typ=set_typ,
504
+
453
505
  )
454
506
  return True
455
507
 
@@ -579,6 +631,7 @@ class MysqlDatasQuery:
579
631
  filename=None, # 用来追踪处理进度
580
632
  reset_id=False, # 是否重置自增列
581
633
  set_typ=set_typ,
634
+
582
635
  )
583
636
  return True
584
637
 
@@ -697,6 +750,7 @@ class MysqlDatasQuery:
697
750
  filename=None, # 用来追踪处理进度
698
751
  reset_id=False, # 是否重置自增列
699
752
  set_typ=set_typ,
753
+
700
754
  )
701
755
  return True
702
756
 
@@ -804,6 +858,7 @@ class MysqlDatasQuery:
804
858
  filename=None, # 用来追踪处理进度
805
859
  reset_id=False, # 是否重置自增列
806
860
  set_typ=set_typ,
861
+
807
862
  )
808
863
  return True
809
864
 
@@ -858,6 +913,7 @@ class MysqlDatasQuery:
858
913
  filename=None, # 用来追踪处理进度
859
914
  reset_id=False, # 是否重置自增列
860
915
  set_typ=set_typ,
916
+
861
917
  )
862
918
  return True
863
919
 
@@ -915,6 +971,7 @@ class MysqlDatasQuery:
915
971
  filename=None, # 用来追踪处理进度
916
972
  reset_id=False, # 是否重置自增列
917
973
  set_typ=set_typ,
974
+
918
975
  )
919
976
  return True
920
977
 
@@ -996,6 +1053,7 @@ class MysqlDatasQuery:
996
1053
  filename=None, # 用来追踪处理进度
997
1054
  reset_id=False, # 是否重置自增列
998
1055
  set_typ=set_typ,
1056
+
999
1057
  )
1000
1058
  return True
1001
1059
 
@@ -1043,6 +1101,7 @@ class MysqlDatasQuery:
1043
1101
  filename=None, # 用来追踪处理进度
1044
1102
  reset_id=False, # 是否重置自增列
1045
1103
  set_typ=set_typ,
1104
+
1046
1105
  )
1047
1106
  return True
1048
1107
 
@@ -1126,6 +1185,7 @@ class MysqlDatasQuery:
1126
1185
  filename=None, # 用来追踪处理进度
1127
1186
  reset_id=False, # 是否重置自增列
1128
1187
  set_typ=set_typ,
1188
+
1129
1189
  )
1130
1190
  return True
1131
1191
 
@@ -1192,6 +1252,7 @@ class MysqlDatasQuery:
1192
1252
  filename=None, # 用来追踪处理进度
1193
1253
  reset_id=False, # 是否重置自增列
1194
1254
  set_typ=set_typ,
1255
+
1195
1256
  )
1196
1257
  return True
1197
1258
 
@@ -1289,6 +1350,7 @@ class MysqlDatasQuery:
1289
1350
  filename=None, # 用来追踪处理进度
1290
1351
  reset_id=False, # 是否重置自增列
1291
1352
  set_typ=set_typ,
1353
+
1292
1354
  )
1293
1355
  return True
1294
1356
 
@@ -1358,6 +1420,7 @@ class MysqlDatasQuery:
1358
1420
  filename=None, # 用来追踪处理进度
1359
1421
  reset_id=False, # 是否重置自增列
1360
1422
  set_typ=set_typ,
1423
+
1361
1424
  )
1362
1425
  return True
1363
1426
 
@@ -1419,6 +1482,7 @@ class MysqlDatasQuery:
1419
1482
  filename=None, # 用来追踪处理进度
1420
1483
  reset_id=False, # 是否重置自增列
1421
1484
  set_typ=set_typ,
1485
+
1422
1486
  )
1423
1487
  return True
1424
1488
 
@@ -1498,6 +1562,7 @@ class MysqlDatasQuery:
1498
1562
  filename=None, # 用来追踪处理进度
1499
1563
  reset_id=False, # 是否重置自增列
1500
1564
  set_typ=set_typ,
1565
+
1501
1566
  )
1502
1567
  return True
1503
1568
 
@@ -1636,6 +1701,7 @@ class MysqlDatasQuery:
1636
1701
  filename=None, # 用来追踪处理进度
1637
1702
  reset_id=False, # 是否重置自增列
1638
1703
  set_typ=set_typ,
1704
+
1639
1705
  )
1640
1706
  return True
1641
1707
 
@@ -1644,6 +1710,14 @@ class MysqlDatasQuery:
1644
1710
  """
1645
1711
  汇总各个店铺的推广数据,按日汇总
1646
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
+
1647
1721
  start_date, end_date = self.months_data(num=self.months)
1648
1722
  projection = {
1649
1723
  '日期': 1,
@@ -1663,18 +1737,19 @@ class MysqlDatasQuery:
1663
1737
  end_date=end_date,
1664
1738
  projection=projection,
1665
1739
  )
1666
- df_tm.rename(columns={'场景名字': '营销场景'}, inplace=True)
1667
- df_tm = df_tm.groupby(
1668
- ['日期', '店铺名称', '营销场景', '花费'],
1669
- as_index=False).agg(
1670
- **{
1671
- '展现量': ('展现量', np.max),
1672
- '点击量': ('点击量', np.max),
1673
- '加购量': ('总购物车数', np.max),
1674
- '成交笔数': ('总成交笔数', np.max),
1675
- '成交金额': ('总成交金额', np.max)
1676
- }
1677
- )
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
+ )
1678
1753
 
1679
1754
  df_tb = self.download.data_to_df(
1680
1755
  db_name='推广数据_淘宝店',
@@ -1683,22 +1758,69 @@ class MysqlDatasQuery:
1683
1758
  end_date=end_date,
1684
1759
  projection=projection,
1685
1760
  )
1686
- # print(df_tb)
1687
- # df_tm.to_csv('/Users/xigua/Downloads/test2.csv', index=False, header=True, encoding='utf-8_sig')
1688
- # df_tb.to_csv('/Users/xigua/Downloads/test.csv', index=False, header=True, encoding='utf-8_sig')
1689
- df_tb.rename(columns={'场景名字': '营销场景'}, inplace=True)
1690
- df_tb = df_tb.groupby(
1691
- ['日期', '店铺名称', '营销场景', '花费'],
1692
- as_index=False).agg(
1693
- **{
1694
- '展现量': ('展现量', np.max),
1695
- '点击量': ('点击量', np.max),
1696
- '加购量': ('总购物车数', np.max),
1697
- '成交笔数': ('总成交笔数', np.max),
1698
- '成交金额': ('总成交金额', 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,
1699
1788
  }
1700
- )
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['营销场景'] = '全站推广'
1701
1822
 
1823
+ # 品销宝报表
1702
1824
  projection = {
1703
1825
  '日期': 1,
1704
1826
  '报表类型': 1,
@@ -1717,20 +1839,21 @@ class MysqlDatasQuery:
1717
1839
  end_date=end_date,
1718
1840
  projection=projection,
1719
1841
  )
1720
- df_tm_pxb = df_tm_pxb[df_tm_pxb['报表类型'] == '账户']
1721
- df_tm_pxb = df_tm_pxb.groupby(
1722
- ['日期', '店铺名称', '报表类型', '消耗'],
1723
- as_index=False).agg(
1724
- **{
1725
- '展现量': ('展现量', np.max),
1726
- '点击量': ('点击量', np.max),
1727
- '加购量': ('宝贝加购数', np.max),
1728
- '成交笔数': ('成交笔数', np.max),
1729
- '成交金额': ('成交金额', np.max)
1730
- }
1731
- )
1732
- df_tm_pxb.rename(columns={'报表类型': '营销场景', '消耗': '花费'}, inplace=True)
1733
- 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['营销场景'] = '品销宝'
1734
1857
 
1735
1858
  # 因为 2024.04.16及之前的营销场景报表不含超级直播,所以在此添加
1736
1859
  if start_date < pd.to_datetime('2024-04-17'):
@@ -1765,10 +1888,6 @@ class MysqlDatasQuery:
1765
1888
  '成交金额': ('总成交金额', np.max)
1766
1889
  }
1767
1890
  )
1768
- else:
1769
- df_tm_living = pd.DataFrame()
1770
- else:
1771
- df_tm_living = pd.DataFrame()
1772
1891
 
1773
1892
  projection = {
1774
1893
  '日期': 1,
@@ -1794,19 +1913,20 @@ class MysqlDatasQuery:
1794
1913
  end_date=end_date,
1795
1914
  projection=projection,
1796
1915
  )
1797
- df_jd = df_jd.groupby(['日期', '店铺名称', '产品线', '触发sku_id', '跟单sku_id', 'spu_id', '花费', '展现数', '点击数'],
1798
- as_index=False).agg(
1799
- **{'直接订单行': ('直接订单行', np.max),
1800
- '直接订单金额': ('直接订单金额', np.max),
1801
- '成交笔数': ('总订单行', np.max),
1802
- '成交金额': ('总订单金额', np.max),
1803
- '直接加购数': ('直接加购数', np.max),
1804
- '加购量': ('总加购数', np.max),
1805
- }
1806
- )
1807
- df_jd = df_jd[['日期', '店铺名称', '产品线', '花费', '展现数', '点击数', '加购量', '成交笔数', '成交金额']]
1808
- df_jd.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
1809
- 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]
1810
1930
 
1811
1931
  projection = {
1812
1932
  '日期': 1,
@@ -1843,7 +1963,7 @@ class MysqlDatasQuery:
1843
1963
  df_jd_qzyx = df_jd_qzyx[['日期', '店铺名称', '营销场景', '花费', '展现量', '点击量', '成交笔数', '成交金额']]
1844
1964
  df_jd_qzyx = df_jd_qzyx[df_jd_qzyx['花费'] > 0]
1845
1965
 
1846
- _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
1847
1967
  df = pd.concat(_datas, axis=0, ignore_index=True)
1848
1968
  df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore') # 转换日期列
1849
1969
  df = df.groupby(
@@ -1888,6 +2008,7 @@ class MysqlDatasQuery:
1888
2008
  filename=None, # 用来追踪处理进度
1889
2009
  reset_id=False, # 是否重置自增列
1890
2010
  set_typ=set_typ,
2011
+
1891
2012
  )
1892
2013
  return True
1893
2014
 
@@ -1972,6 +2093,7 @@ class MysqlDatasQuery:
1972
2093
  filename=None, # 用来追踪处理进度
1973
2094
  reset_id=False, # 是否重置自增列
1974
2095
  set_typ=set_typ,
2096
+
1975
2097
  )
1976
2098
  return True
1977
2099
 
@@ -2024,6 +2146,7 @@ class MysqlDatasQuery:
2024
2146
  filename=None, # 用来追踪处理进度
2025
2147
  reset_id=False, # 是否重置自增列
2026
2148
  set_typ=set_typ,
2149
+
2027
2150
  )
2028
2151
  return True
2029
2152
 
@@ -2131,6 +2254,7 @@ class MysqlDatasQuery:
2131
2254
  filename=None, # 用来追踪处理进度
2132
2255
  reset_id=False, # 是否重置自增列
2133
2256
  set_typ=set_typ,
2257
+
2134
2258
  )
2135
2259
  return True
2136
2260
 
@@ -2495,7 +2619,7 @@ class MysqlDatasQuery:
2495
2619
  df.drop(labels='宝贝id', axis=1, inplace=True)
2496
2620
 
2497
2621
  # df.drop_duplicates(subset=['日期', '店铺名称', '商品id', '花费', '销售额'], keep='last', inplace=True, ignore_index=True)
2498
- # df.fillna(0, inplace=True)
2622
+ df.fillna(0, inplace=True)
2499
2623
  df['成本价'] = df['成本价'].astype('float64')
2500
2624
  df['销售额'] = df['销售额'].astype('float64')
2501
2625
  df['销售量'] = df['销售量'].astype('int64')
@@ -2541,6 +2665,7 @@ class MysqlDatasQuery:
2541
2665
  filename=None, # 用来追踪处理进度
2542
2666
  reset_id=False, # 是否重置自增列
2543
2667
  set_typ=set_typ,
2668
+
2544
2669
  )
2545
2670
  return True
2546
2671
 
@@ -2651,6 +2776,7 @@ class MysqlDatasQuery:
2651
2776
  filename=None, # 用来追踪处理进度
2652
2777
  reset_id=False, # 是否重置自增列
2653
2778
  set_typ=set_typ,
2779
+
2654
2780
  )
2655
2781
  return True
2656
2782
 
@@ -2722,6 +2848,7 @@ class MysqlDatasQuery:
2722
2848
  filename=None, # 用来追踪处理进度
2723
2849
  reset_id=False, # 是否重置自增列
2724
2850
  set_typ=set_typ,
2851
+
2725
2852
  )
2726
2853
  return True
2727
2854
 
@@ -2780,6 +2907,7 @@ def date_table():
2780
2907
  count=None,
2781
2908
  filename=None, # 用来追踪处理进度
2782
2909
  set_typ=set_typ,
2910
+
2783
2911
  )
2784
2912
 
2785
2913
 
@@ -2851,13 +2979,13 @@ def query_(months=1, less_dict=[]):
2851
2979
 
2852
2980
 
2853
2981
  if __name__ == '__main__':
2854
- main(days=100, months=3)
2855
- # query_(months=13)
2982
+ main(days=130, months=3)
2983
+ # query_(months=1)
2856
2984
 
2857
2985
  # # 4. 清理聚合数据
2858
2986
  # optimize_data.op_data(
2859
2987
  # db_name_lists=['聚合数据'],
2860
- # days=40,
2988
+ # days=100,
2861
2989
  # is_mongo=False,
2862
2990
  # is_mysql=True,
2863
2991
  # )
mdbq/config/products.py CHANGED
@@ -142,9 +142,9 @@ class Products:
142
142
  # icm_update=['日期', '店铺名称', '宝贝id'], # 唯一组合键
143
143
  unique_main_key=['商品id'],
144
144
  set_typ={
145
- '商品id': 'mediumtext',
146
- '平台': 'mediumtext',
147
- '上市年份': 'mediumtext',
145
+ '商品id': 'bigint',
146
+ '平台': 'varchar(100)',
147
+ '上市年份': 'varchar(100)',
148
148
  },
149
149
  )
150
150
 
@@ -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], 0, inplace=True) # 清理一些非法值
35
- df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value=0, 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)
mdbq/mysql/mysql.py CHANGED
@@ -362,8 +362,8 @@ class MysqlUpload:
362
362
 
363
363
  def cover_df(self, df):
364
364
  """ 清理 df 的值和列名 """
365
- df.replace([np.inf, -np.inf], 0, inplace=True) # 清理一些非法值
366
- df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value=0, 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) # 替换掉特殊字符
367
367
  df.replace(to_replace=[','], value='', regex=True, inplace=True)
368
368
  df.replace(to_replace=['="'], value='', regex=True, inplace=True) # ="和"不可以放在一起清洗, 因为有: id=86785565
369
369
  df.replace(to_replace=['"'], value='', regex=True, inplace=True)
@@ -411,15 +411,15 @@ class MysqlUpload:
411
411
  elif result4: # 小数
412
412
  __res_dict.update({k: 'decimal(12,2)'})
413
413
  elif k == '日期':
414
- __res_dict.update({k: 'DATE'})
414
+ __res_dict.update({k: 'date'})
415
415
  elif k == '更新时间':
416
- __res_dict.update({k: 'TIMESTAMP'})
416
+ __res_dict.update({k: 'timestamp'})
417
417
  elif v == 'int64':
418
418
  __res_dict.update({k: 'int'})
419
419
  elif v == 'float64':
420
420
  __res_dict.update({k: 'decimal(10,4)'})
421
421
  elif v == 'bool':
422
- __res_dict.update({k: 'BOOLEAN'})
422
+ __res_dict.update({k: 'boolean'})
423
423
  elif v == 'datetime64[ns]':
424
424
  __res_dict.update({k: 'datetime'})
425
425
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 3.0.1
3
+ Version: 3.0.3
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -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=2KCVXZygQt4xVxGbFcDMBpL3PukY4yQF_uI-qLSTWaU,73460
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=DyUj4oN_Nxg0r9MDdXV69mcnBhQfuglvVHGaSc9Y9CU,126940
8
+ mdbq/aggregation/query_data.py,sha256=zpjxirAf8T4WUfkPIrBzDLVp7ojssViopGUPeORxS9o,132599
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
@@ -17,17 +17,17 @@ mdbq/company/copysh.py,sha256=eFu6focRqm2Njn_XN1KW2ZYJiTv6EYgsdBCLokobyxQ,21572
17
17
  mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
18
18
  mdbq/config/get_myconf.py,sha256=cmNvsyoNa0RbZ9FOTjSd3jyyGwkxjUo0phvdHbGlrms,6010
19
19
  mdbq/config/myconfig.py,sha256=EGymTlAimtHIDJ9egCtOehBEPOj6rea504kvsEZu64o,854
20
- mdbq/config/products.py,sha256=ykvoQiA4OvFEYQ35wmCkREECdz0xIJzIs-Xix9mFpYI,6295
20
+ 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=doWRcFMqf0_RQz7w5BxRNB8JeLetFSsNld43GWlhXXc,4600
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=KGfByf3KJF0xG-DeDANbJVmS96jwqbhapXPwlygC8-s,59917
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.1.dist-info/METADATA,sha256=HXWoDGKZXTWZPr3SxiL0_0_nrEGf01uhiSU0phSUWE0,243
48
- mdbq-3.0.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
49
- mdbq-3.0.1.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
50
- mdbq-3.0.1.dist-info/RECORD,,
47
+ mdbq-3.0.3.dist-info/METADATA,sha256=XjPWfGSiF-THV8JDaOyOqGHhmM9eBYV-dSxtAXB00V8,243
48
+ mdbq-3.0.3.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
49
+ mdbq-3.0.3.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
50
+ mdbq-3.0.3.dist-info/RECORD,,
File without changes