mdbq 4.0.52__py3-none-any.whl → 4.0.54__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/__version__.py CHANGED
@@ -1 +1 @@
1
- VERSION = '4.0.52'
1
+ VERSION = '4.0.54'
@@ -211,7 +211,7 @@ def upload_data_decorator(**upload_kwargs):
211
211
  return decorator
212
212
 
213
213
 
214
- class MysqlDatasQuery:
214
+ class ShopDataQuery:
215
215
  """
216
216
  从数据库中下载数据
217
217
  """
@@ -247,7 +247,7 @@ class MysqlDatasQuery:
247
247
  df = df_shop_gmv.merge(df_real_sales, on=['日期', '店铺名称'], how='outer') # 平台数据合并销售数据
248
248
  df = df.merge(df_tg_data, on=['日期', '店铺名称'], how='outer') # 合并推广数据
249
249
  df.fillna(0, inplace=True)
250
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
250
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
251
251
  return df, {
252
252
  'db_name': db_name,
253
253
  'table_name': table_name,
@@ -265,6 +265,7 @@ class MysqlDatasQuery:
265
265
  }
266
266
 
267
267
  def _get_tg_data(self, db_name='聚合数据', table_name='多店推广场景_按日聚合', shop_list:dict=None):
268
+ """获取推广数据"""
268
269
  start_date, end_date = self.months_data(num=self.months)
269
270
  projection = ['日期', '店铺名称', '营销场景', '花费']
270
271
  df = self.download_manager.data_to_df(
@@ -377,6 +378,15 @@ class MysqlDatasQuery:
377
378
  return df
378
379
 
379
380
 
381
+ class MysqlDatasQuery:
382
+ """
383
+ 从数据库中下载数据
384
+ """
385
+ def __init__(self, download_manager):
386
+ self.months = 0 # 下载几个月数据, 0 表示当月, 1 是上月 1 号至今
387
+ self.download_manager = download_manager
388
+ self.pf_datas = []
389
+
380
390
  # @error_handler.log_on_exception(logger=logger)
381
391
  def tg_wxt(self, db_name='聚合数据', table_name='天猫_主体报表', is_maximize=True):
382
392
  start_date, end_date = self.months_data(num=self.months)
@@ -451,7 +461,7 @@ class MysqlDatasQuery:
451
461
  }
452
462
  )
453
463
  df.insert(loc=1, column='推广渠道', value='万相台无界版')
454
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
464
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
455
465
  # 制作其他聚合表
456
466
  self.pf_datas.append(
457
467
  {
@@ -599,7 +609,7 @@ class MysqlDatasQuery:
599
609
  }
600
610
  )
601
611
  df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
602
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
612
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
603
613
  return df, {
604
614
  'db_name': db_name,
605
615
  'table_name': table_name,
@@ -690,7 +700,7 @@ class MysqlDatasQuery:
690
700
  }
691
701
  )
692
702
  df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
693
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
703
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
694
704
  return df, {
695
705
  'db_name': db_name,
696
706
  'table_name': table_name,
@@ -781,7 +791,7 @@ class MysqlDatasQuery:
781
791
  }
782
792
  )
783
793
  df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
784
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
794
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
785
795
  return df, {
786
796
  'db_name': db_name,
787
797
  'table_name': table_name,
@@ -841,7 +851,7 @@ class MysqlDatasQuery:
841
851
  else '300+' if x >= 300
842
852
  else '300以下'
843
853
  )
844
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
854
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
845
855
  return df, {
846
856
  'db_name': db_name,
847
857
  'table_name': table_name,
@@ -1030,7 +1040,7 @@ class MysqlDatasQuery:
1030
1040
  else x['人群分类'], axis=1
1031
1041
  )
1032
1042
  df['人群分类'] = df['人群分类'].apply(lambda x: str(x).upper() if x else x)
1033
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1043
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1034
1044
  df.fillna(0, inplace=True)
1035
1045
  return df, {
1036
1046
  'db_name': db_name,
@@ -1146,7 +1156,7 @@ class MysqlDatasQuery:
1146
1156
  )
1147
1157
  else:
1148
1158
  df['词分类'] = df['词名字_词包名字'].apply(lambda x: self.ret_keyword(keyword=str(x), as_file=False))
1149
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1159
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1150
1160
  return df, {
1151
1161
  'db_name': db_name,
1152
1162
  'table_name': table_name,
@@ -1295,7 +1305,7 @@ class MysqlDatasQuery:
1295
1305
  '数据主体': df[['日期', '店铺名称', '推广渠道', '营销场景', '花费', '展现量', '观看次数', '加购量', '成交笔数', '成交金额', '直接成交笔数', '直接成交金额']]
1296
1306
  },
1297
1307
  ) # 制作其他聚合表
1298
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1308
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1299
1309
  return df, {
1300
1310
  'db_name': db_name,
1301
1311
  'table_name': table_name,
@@ -1389,7 +1399,7 @@ class MysqlDatasQuery:
1389
1399
  '数据主体': df[['日期', '店铺名称', '推广渠道', '营销场景', '花费', '展现量', '点击量', '加购量', '成交笔数', '成交金额']]
1390
1400
  },
1391
1401
  ) # 制作其他聚合表
1392
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1402
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1393
1403
  logger.info('更新', {'主机': f'{host}:{port}', '库': db_name, '表': table_name})
1394
1404
  return df, {
1395
1405
  'db_name': db_name,
@@ -1430,7 +1440,7 @@ class MysqlDatasQuery:
1430
1440
  idx = df.groupby(['日期', '商品id'])['更新时间'].idxmax()
1431
1441
  df = df.loc[idx]
1432
1442
  df.rename(columns={'商品id': '宝贝id'}, inplace=True)
1433
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1443
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1434
1444
  logger.info('更新', {'主机': f'{host}:{port}', '库': db_name, '表': table_name})
1435
1445
  return df, {
1436
1446
  'db_name': db_name,
@@ -1472,7 +1482,7 @@ class MysqlDatasQuery:
1472
1482
  idx = df.groupby(['日期', 'sku_id'])['更新时间'].idxmax()
1473
1483
  df = df.loc[idx]
1474
1484
  df.rename(columns={'白底图': '商品图片'}, inplace=True)
1475
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1485
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1476
1486
  return df, {
1477
1487
  'db_name': db_name,
1478
1488
  'table_name': table_name,
@@ -1523,7 +1533,7 @@ class MysqlDatasQuery:
1523
1533
  return item['上市年份']
1524
1534
 
1525
1535
  df['上市年份'] = df['商品id'].apply(lambda x: check_year(x))
1526
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1536
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1527
1537
  return df, {
1528
1538
  'db_name': db_name,
1529
1539
  'table_name': table_name,
@@ -1603,7 +1613,7 @@ class MysqlDatasQuery:
1603
1613
  df['上市季节'] = df['上市年月'].apply(lambda x: check_jijie(x))
1604
1614
  p = df.pop('上市季节')
1605
1615
  df.insert(loc=9, column='上市季节', value=p)
1606
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1616
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1607
1617
  return df, {
1608
1618
  'db_name': db_name,
1609
1619
  'table_name': table_name,
@@ -1690,9 +1700,10 @@ class MysqlDatasQuery:
1690
1700
  df = pd.merge(df, df_visitor1, how='left', left_on='一级来源', right_on='一级来源')
1691
1701
  df = pd.merge(df, df_visitor2, how='left', left_on='二级来源', right_on='二级来源')
1692
1702
  df = pd.merge(df, df_visitor3, how='left', left_on='三级来源', right_on='三级来源')
1703
+
1693
1704
  for col in ['一级来源索引', '二级来源索引', '三级来源索引']:
1694
1705
  df[col] = df[col].apply(lambda x: 1000 if str(x) == 'nan' else x)
1695
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1706
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1696
1707
  return df, {
1697
1708
  'db_name': db_name,
1698
1709
  'table_name': table_name,
@@ -1721,7 +1732,7 @@ class MysqlDatasQuery:
1721
1732
  df = pd.DataFrame(data=data_values)
1722
1733
  df.sort_values(by=['款号', '日期'], ascending=[False, True], ignore_index=True, inplace=True)
1723
1734
  df.drop_duplicates(subset=['款号'], keep='last', inplace=True, ignore_index=True)
1724
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1735
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1725
1736
  return df, {
1726
1737
  'db_name': db_name,
1727
1738
  'table_name': table_name,
@@ -1813,7 +1824,7 @@ class MysqlDatasQuery:
1813
1824
  cols = list(df.columns)
1814
1825
  cols.insert(3, cols.pop(cols.index('spu_id')))
1815
1826
  df = df[cols]
1816
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1827
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1817
1828
  return df, {
1818
1829
  'db_name': db_name,
1819
1830
  'table_name': table_name,
@@ -1868,7 +1879,7 @@ class MysqlDatasQuery:
1868
1879
  }
1869
1880
  )
1870
1881
  df = df[df['花费'] > 0]
1871
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1882
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1872
1883
  return df, {
1873
1884
  'db_name': db_name,
1874
1885
  'table_name': table_name,
@@ -1944,7 +1955,7 @@ class MysqlDatasQuery:
1944
1955
  df['k_是否品牌词'] = df['k_是否品牌词'].apply(lambda x: '品牌词' if x else '-')
1945
1956
  df['s_是否品牌词'] = df['搜索词'].str.contains('万里马|wanlima', regex=True)
1946
1957
  df['s_是否品牌词'] = df['s_是否品牌词'].apply(lambda x: '品牌词' if x else '-')
1947
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
1958
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1948
1959
  return df, {
1949
1960
  'db_name': db_name,
1950
1961
  'table_name': table_name,
@@ -1994,7 +2005,7 @@ class MysqlDatasQuery:
1994
2005
  idx = df.groupby(['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数'])['更新时间'].idxmax()
1995
2006
  df = df.loc[idx]
1996
2007
  df = df[['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数', '成交单量', '成交金额']]
1997
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2008
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
1998
2009
  return df, {
1999
2010
  'db_name': db_name,
2000
2011
  'table_name': table_name,
@@ -2044,7 +2055,7 @@ class MysqlDatasQuery:
2044
2055
  idx = df.groupby(['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数'])['更新时间'].idxmax()
2045
2056
  df = df.loc[idx]
2046
2057
  df = df[['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数', '成交单量', '成交金额']]
2047
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2058
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2048
2059
  return df, {
2049
2060
  'db_name': db_name,
2050
2061
  'table_name': table_name,
@@ -2104,7 +2115,7 @@ class MysqlDatasQuery:
2104
2115
  idx = df.groupby(['日期', '店铺名称', '词类型', '搜索词'])['更新时间'].idxmax()
2105
2116
  df = df.loc[idx]
2106
2117
  df = df[['日期', '店铺名称', '词类型', '搜索词', '访客数', '加购人数', '支付金额', '支付转化率', '支付买家数', '客单价', 'uv价值']]
2107
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2118
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2108
2119
  return df, {
2109
2120
  'db_name': db_name,
2110
2121
  'table_name': table_name,
@@ -2120,6 +2131,39 @@ class MysqlDatasQuery:
2120
2131
  'transaction_mode': 'batch', # 事务模式
2121
2132
  'unique_keys': [['日期', '店铺名称', '词类型', '搜索词']], # 唯一约束列表
2122
2133
  }
2134
+
2135
+ def pdd_tg(self, db_name='聚合数据', table_name='拼多多_商品推广'):
2136
+ """拼多多商品推广数据"""
2137
+ start_date, end_date = self.months_data(num=self.months)
2138
+ projection = ['日期', '店铺名称', '营销场景', '商品id', '总花费']
2139
+ df = self.download_manager.data_to_df(
2140
+ db_name='爱库存2',
2141
+ table_name='拼多多_商品推广',
2142
+ start_date=start_date,
2143
+ end_date=end_date,
2144
+ projection=projection,
2145
+ )
2146
+ if len(df) == 0:
2147
+ return None, None
2148
+ df = df.groupby(['日期', '店铺名称', '营销场景'], as_index=False).agg({'总花费': 'sum'}).rename(columns={'总花费': '花费'})
2149
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2150
+ return df, {
2151
+ 'db_name': db_name,
2152
+ 'table_name': table_name,
2153
+ 'set_typ': set_typ,
2154
+ 'primary_keys': [], # 创建唯一主键
2155
+ 'check_duplicate': False, # 检查重复数据
2156
+ 'duplicate_columns': [], # 指定排重的组合键
2157
+ 'update_on_duplicate': True, # 更新旧数据
2158
+ 'allow_null': False, # 允许插入空值
2159
+ 'partition_by': None, # 分表方式
2160
+ 'partition_date_column': '日期', # 用于分表的日期列名,默认为'日期'
2161
+ 'indexes': [], # 普通索引列
2162
+ 'transaction_mode': 'batch', # 事务模式
2163
+ 'unique_keys': [['日期', '店铺名称', '营销场景']], # 唯一约束列表
2164
+ }
2165
+
2166
+
2123
2167
 
2124
2168
  @error_handler.log_on_exception(logger=logger)
2125
2169
  @upload_data_decorator()
@@ -2133,7 +2177,7 @@ class MysqlDatasQuery:
2133
2177
  projection={},
2134
2178
  )
2135
2179
  df.drop_duplicates(subset=['场次id'], keep='first', inplace=True, ignore_index=True)
2136
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2180
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2137
2181
  ordered_columns = [
2138
2182
  '日期',
2139
2183
  '店铺名称',
@@ -2201,6 +2245,7 @@ class MysqlDatasQuery:
2201
2245
  df_jd = pd.DataFrame() # 京东推广
2202
2246
  df_jd_qzyx = pd.DataFrame() # 京东全站推广
2203
2247
  df_jd_ziying = pd.DataFrame() # 京东推广
2248
+ df_pdd = pd.DataFrame() # 拼多多推广
2204
2249
  start_date, end_date = self.months_data(num=self.months)
2205
2250
  projection = {
2206
2251
  '日期': 1,
@@ -2565,7 +2610,14 @@ class MysqlDatasQuery:
2565
2610
  df_jd_ziying.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
2566
2611
  df_jd_ziying = df_jd_ziying[df_jd_ziying['花费'] > 0]
2567
2612
 
2568
- _datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_al, df_sj, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx, df_jd_ziying] if len(item) > 0] # 阻止空的 dataframe
2613
+ # 拼多多推广
2614
+ df_pdd, _ = self.pdd_tg(db_name='聚合数据', table_name='拼多多_商品推广')
2615
+ df_pdd['店铺名称'] = df_pdd['店铺名称'].map({
2616
+ '万里马箱包官方旗舰店': '拼多多_丹宁',
2617
+ '万里马箱包皮具官方旗舰店': '拼多多_togo',
2618
+ }).fillna('-')
2619
+
2620
+ _datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_al, df_sj, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx, df_jd_ziying, df_pdd] if len(item) > 0] # 阻止空的 dataframe
2569
2621
  df = pd.concat(_datas, axis=0, ignore_index=True)
2570
2622
  # 超级直播全站推广不包含在营销场景报表中,所以单独添加 2025-03-05
2571
2623
  projection = {
@@ -2618,7 +2670,7 @@ class MysqlDatasQuery:
2618
2670
  }
2619
2671
  )
2620
2672
  df.sort_values(['日期', '店铺名称', '花费'], ascending=[False, False, False], ignore_index=True, inplace=True)
2621
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2673
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2622
2674
  return df, {
2623
2675
  'db_name': db_name,
2624
2676
  'table_name': table_name,
@@ -2694,7 +2746,7 @@ class MysqlDatasQuery:
2694
2746
  df = df[new_columns]
2695
2747
  df['更新时间'] = df.pop('更新时间')
2696
2748
  df = df.astype({'日期': 'datetime64[ns]'}, errors='ignore')
2697
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2749
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2698
2750
  return df, {
2699
2751
  'db_name': db_name,
2700
2752
  'table_name': table_name,
@@ -2723,7 +2775,7 @@ class MysqlDatasQuery:
2723
2775
  projection=projection,
2724
2776
  )
2725
2777
  df.drop_duplicates(subset=['日期', '人群类型', '店铺名称', '人群规模', '广告投入金额'], keep='last', inplace=True, ignore_index=True)
2726
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2778
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2727
2779
  return df, {
2728
2780
  'db_name': db_name,
2729
2781
  'table_name': table_name,
@@ -2762,7 +2814,7 @@ class MysqlDatasQuery:
2762
2814
  df.rename(columns={'起始日期': '日期'}, inplace=True)
2763
2815
 
2764
2816
  # df.drop_duplicates(subset=['日期', '店铺名称', '场景id', '父渠道id'], keep='last', inplace=True, ignore_index=True)
2765
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2817
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2766
2818
  return df, {
2767
2819
  'db_name': db_name,
2768
2820
  'table_name': table_name,
@@ -2822,7 +2874,7 @@ class MysqlDatasQuery:
2822
2874
  df['用户年龄'] = df['用户年龄'].apply(lambda x: '~'.join(re.findall(r'^(\d+).*-(\d+)岁$', str(x))[0]) if '岁' in str(x) else x)
2823
2875
  df['消费能力等级'] = df['消费能力等级'].apply(lambda x: f'L{''.join(re.findall(r'(\d)', str(x)))}' if '购买力' in str(x) else x)
2824
2876
  df.rename(columns={'消耗_元': '消耗'}, inplace=True)
2825
- set_typ = SET_TYP_DICT[f'{db_name}_{table_name}']
2877
+ set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
2826
2878
  return df, {
2827
2879
  'db_name': db_name,
2828
2880
  'table_name': table_name,
@@ -3314,50 +3366,50 @@ def date_table():
3314
3366
 
3315
3367
 
3316
3368
  def query1(months=1, download_manager=None):
3317
- sdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
3318
- sdq.months = months # 设置数据周期, 1 表示近 2 个月
3369
+ msdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
3370
+ msdq.months = months # 设置数据周期, 1 表示近 2 个月
3319
3371
  # 依赖表 -- >>
3320
- sdq.tg_wxt(db_name='聚合数据', table_name='天猫_主体报表')
3321
- sdq.tg_cjzb(db_name='聚合数据', table_name='天猫_超级直播')
3322
- sdq.pxb_zh(db_name='聚合数据', table_name='天猫_品销宝账户报表')
3372
+ msdq.tg_wxt(db_name='聚合数据', table_name='天猫_主体报表')
3373
+ msdq.tg_cjzb(db_name='聚合数据', table_name='天猫_超级直播')
3374
+ msdq.pxb_zh(db_name='聚合数据', table_name='天猫_品销宝账户报表')
3323
3375
  # 依赖表 << --
3324
3376
 
3325
- sdq.syj(db_name='聚合数据', table_name='生意经_宝贝指标')
3326
- sdq.idbm(db_name='聚合数据', table_name='商品id编码表')
3327
- sdq.sp_picture(db_name='聚合数据', table_name='商品id图片对照表')
3328
- sdq.sp_cost(db_name='聚合数据', table_name='商品成本')
3329
- sdq.jdjzt(db_name='聚合数据', table_name='京东_京准通')
3330
- sdq.sku_sales(db_name='聚合数据', table_name='京东_sku_商品明细')
3377
+ msdq.syj(db_name='聚合数据', table_name='生意经_宝贝指标')
3378
+ msdq.idbm(db_name='聚合数据', table_name='商品id编码表')
3379
+ msdq.sp_picture(db_name='聚合数据', table_name='商品id图片对照表')
3380
+ msdq.sp_cost(db_name='聚合数据', table_name='商品成本')
3381
+ msdq.jdjzt(db_name='聚合数据', table_name='京东_京准通')
3382
+ msdq.sku_sales(db_name='聚合数据', table_name='京东_sku_商品明细')
3331
3383
 
3332
- sdq._ald_wxt(db_name='聚合数据', table_name='奥莱店_主体报表')
3333
- sdq._sj_wxt(db_name='聚合数据', table_name='圣积天猫店_主体报表')
3334
- sdq._tb_wxt(db_name='聚合数据', table_name='淘宝_主体报表')
3335
- sdq.jdqzyx(db_name='聚合数据', table_name='京东_京准通_全站营销')
3336
- sdq.spu_sales(db_name='聚合数据', table_name='京东_spu_商品明细')
3337
- sdq.zb_ccfx(db_name='聚合数据', table_name='生意参谋_直播场次分析')
3338
- sdq.tg_by_day(db_name='聚合数据', table_name='多店推广场景_按日聚合')
3339
- sdq.performance_concat(bb_tg=False, db_name='聚合数据', table_name='天猫_推广汇总') # _推广商品销售
3384
+ msdq._ald_wxt(db_name='聚合数据', table_name='奥莱店_主体报表')
3385
+ msdq._sj_wxt(db_name='聚合数据', table_name='圣积天猫店_主体报表')
3386
+ msdq._tb_wxt(db_name='聚合数据', table_name='淘宝_主体报表')
3387
+ msdq.jdqzyx(db_name='聚合数据', table_name='京东_京准通_全站营销')
3388
+ msdq.spu_sales(db_name='聚合数据', table_name='京东_spu_商品明细')
3389
+ msdq.zb_ccfx(db_name='聚合数据', table_name='生意参谋_直播场次分析')
3390
+ msdq.tg_by_day(db_name='聚合数据', table_name='多店推广场景_按日聚合')
3391
+ msdq.performance_concat(bb_tg=False, db_name='聚合数据', table_name='天猫_推广汇总') # _推广商品销售
3340
3392
 
3341
3393
 
3342
3394
  def query2(months=1, download_manager=None):
3343
- sdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
3344
- sdq.months = months # 设置数据周期, 1 表示近 2 个月
3345
- sdq.dplyd(db_name='聚合数据', table_name='店铺流量来源构成')
3346
- sdq.tg_rqbb(db_name='聚合数据', table_name='天猫_人群报表')
3347
- sdq.tg_gjc(db_name='聚合数据', table_name='天猫_关键词报表')
3348
- sdq.jd_gjc(db_name='聚合数据', table_name='京东_关键词报表')
3349
- sdq.se_search(db_name='聚合数据', table_name='天猫店铺来源_手淘搜索')
3395
+ msdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
3396
+ msdq.months = months # 设置数据周期, 1 表示近 2 个月
3397
+ msdq.dplyd(db_name='聚合数据', table_name='店铺流量来源构成')
3398
+ msdq.tg_rqbb(db_name='聚合数据', table_name='天猫_人群报表')
3399
+ msdq.tg_gjc(db_name='聚合数据', table_name='天猫_关键词报表')
3400
+ msdq.jd_gjc(db_name='聚合数据', table_name='京东_关键词报表')
3401
+ msdq.se_search(db_name='聚合数据', table_name='天猫店铺来源_手淘搜索')
3350
3402
  # sdq.aikucun_bd_spu(db_name='聚合数据', table_name='爱库存_商品spu榜单')
3351
- sdq.dmp_crowd(db_name='聚合数据', table_name='达摩盘_人群报表')
3352
- sdq.deeplink(db_name='聚合数据', table_name='达摩盘_deeplink人群洞察')
3353
- sdq.global_insights(db_name='聚合数据', table_name='全域洞察')
3403
+ msdq.dmp_crowd(db_name='聚合数据', table_name='达摩盘_人群报表')
3404
+ msdq.deeplink(db_name='聚合数据', table_name='达摩盘_deeplink人群洞察')
3405
+ msdq.global_insights(db_name='聚合数据', table_name='全域洞察')
3354
3406
 
3355
3407
 
3356
3408
  def query3(months=1, download_manager=None):
3357
- sdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
3358
- sdq.months = months # 设置数据周期, 1 表示近 2 个月
3359
- sdq.spph(db_name='聚合数据', table_name='天猫_商品排行')
3360
- sdq.item_up(db_name='聚合数据', table_name='淘宝店铺货品')
3409
+ msdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
3410
+ msdq.months = months # 设置数据周期, 1 表示近 2 个月
3411
+ msdq.spph(db_name='聚合数据', table_name='天猫_商品排行')
3412
+ msdq.item_up(db_name='聚合数据', table_name='淘宝店铺货品')
3361
3413
 
3362
3414
 
3363
3415
  def main(months=3):
@@ -3386,13 +3438,18 @@ if __name__ == '__main__':
3386
3438
  # main(months=3)
3387
3439
  pass
3388
3440
 
3389
- download_manager = s_query.QueryDatas(
3390
- username=username,
3391
- password=password,
3392
- host=host,
3393
- port=int(port),
3394
- pool_size=10,
3395
- )
3396
- sdq = MysqlDatasQuery(download_manager=download_manager)
3397
- sdq.months = 1
3398
- sdq.shops_concat(db_name='聚合数据', table_name='多店聚合_日报')
3441
+ db_config = {
3442
+ 'username': username,
3443
+ 'password': password,
3444
+ 'host': host,
3445
+ 'port': int(port),
3446
+ 'pool_size': 20,
3447
+ 'mincached': 5,
3448
+ 'maxcached': 10,
3449
+ }
3450
+ with s_query.QueryDatas(**db_config) as download_manager:
3451
+ # shdq = ShopDataQuery(download_manager=download_manager)
3452
+ # shdq.months = 1
3453
+ # shdq.shops_concat(db_name='聚合数据', table_name='多店聚合_日报')
3454
+
3455
+ query1(download_manager=download_manager, months=1)
@@ -38,7 +38,7 @@ SET_TYP_DICT = {
38
38
  '直接成交笔数': 'int',
39
39
  '直接成交金额': 'decimal(12,2)',
40
40
  },
41
- '聚合数据_奥莱_主体报表': {
41
+ '聚合数据_奥莱店_主体报表': {
42
42
  '日期': 'date',
43
43
  '推广渠道': 'varchar(100)',
44
44
  '店铺名称': 'varchar(255)',
@@ -582,6 +582,35 @@ SET_TYP_DICT = {
582
582
  '实际消耗': 'decimal(10,2)',
583
583
  '推广成交金额': 'decimal(12,2)',
584
584
  },
585
+ '聚合数据_店铺流量来源构成': {
586
+ '日期': 'DATE',
587
+ '店铺名称': 'varchar(255)',
588
+ '类别': 'varchar(100)',
589
+ '来源构成': 'varchar(100)',
590
+ '一级来源': 'varchar(100)',
591
+ '二级来源': 'varchar(100)',
592
+ '三级来源': 'varchar(100)',
593
+ '访客数': 'int',
594
+ '支付金额': 'decimal(12,2)',
595
+ '支付买家数': 'smallint',
596
+ '支付转化率': 'decimal(10,4)',
597
+ '加购人数': 'smallint',
598
+ '加购件数': 'smallint',
599
+ '下单买家数': 'smallint',
600
+ '关注店铺人数': 'smallint',
601
+ '一级来源索引': 'smallint',
602
+ '二级来源索引': 'smallint',
603
+ '三级来源索引': 'smallint',
604
+ '更新时间': 'timestamp',
605
+ },
606
+ '爱库存2_拼多多_商品推广': {
607
+ '日期': 'date',
608
+ '店铺名称': 'varchar(255)',
609
+ '营销场景': 'varchar(128)',
610
+ '商品id': 'bigint',
611
+ '商品名称': 'varchar(255)',
612
+ '实际消耗': 'decimal(10,2)',
613
+ },
585
614
  }
586
615
 
587
616
 
mdbq/mysql/uploader.py CHANGED
@@ -1071,6 +1071,10 @@ class MySQLUploader:
1071
1071
  # 统一处理原始数据中列名的特殊字符
1072
1072
  data = self.normalize_column_names(data)
1073
1073
 
1074
+ if not set_typ:
1075
+ logger.warning('set_typ为空, 将自动推断数据类型, 可能存在数据类型识别错误', {
1076
+ 'func': sys._getframe().f_code.co_name,
1077
+ })
1074
1078
  # set_typ的键清洗
1075
1079
  if not set_typ:
1076
1080
  set_typ = {}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.0.52
3
+ Version: 4.0.54
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,8 +1,8 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=oRmzDEkmmyAlXwpbKoDeVNJzH0P6pghSjKc3gq_WNa4,18
2
+ mdbq/__version__.py,sha256=TH_tREycuMQsoB20nak5sEQHNWCpiQzI-3Qpm0fm96g,18
3
3
  mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
4
- mdbq/aggregation/query_data.py,sha256=83-CR2jFFrMJMwkuZm43Kn7P3mjTvjP6i4Av6eEudT8,157236
5
- mdbq/aggregation/set_typ_dict.py,sha256=Cax8i6My6xuTC8l-eB0AJ-kOZQwPRcZj-P9dhiiaTj0,21078
4
+ mdbq/aggregation/query_data.py,sha256=SOqR9o2UFaavbPZ73UWc5AcmxE2U9xFpIh3hPYuvGy4,160008
5
+ mdbq/aggregation/set_typ_dict.py,sha256=93Y5jkEMRI0DUEWA7aj7KSYw1OSmvII4d_-83ibelx8,22130
6
6
  mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
7
7
  mdbq/log/mylogger.py,sha256=kPe3wsQNaB1slfX-Z7VMqzZoMoqPfc7ylYXZDBeFzzI,24945
8
8
  mdbq/myconf/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
@@ -12,7 +12,7 @@ mdbq/mysql/deduplicator.py,sha256=AB3gL7ZwhcmzGHSu4UY4M6YZVPFZ2wlAN3BCcwAhegQ,73
12
12
  mdbq/mysql/mysql.py,sha256=pDg771xBugCMSTWeskIFTi3pFLgaqgyG3smzf-86Wn8,56772
13
13
  mdbq/mysql/s_query.py,sha256=1wJ3HVjHEF6FA-bVeeesRlsf73CZSvVTEQ51CF1OsE4,46786
14
14
  mdbq/mysql/unique_.py,sha256=MaztT-WIyEQUs-OOYY4pFulgHVcXR1BfCy3QUz0XM_U,21127
15
- mdbq/mysql/uploader.py,sha256=Y5gCXuhZR-Oo89xaU4wRlcrzDtarABEyJLt43GvDhcI,88718
15
+ mdbq/mysql/uploader.py,sha256=dJRAtj-IebPgOHvKKeu-CqoeqfSaRqusSBgt_hXgNdw,88926
16
16
  mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
17
17
  mdbq/other/download_sku_picture.py,sha256=X66sVdvVgzoNzmgVJyPtd7bjEvctEKtLPblEPF65EWc,46940
18
18
  mdbq/other/error_handler.py,sha256=4p5haAXSY-P78stp4Xwo_MwAngWYqyKj5ogWIuYXMeY,12631
@@ -25,7 +25,7 @@ mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
25
25
  mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
26
26
  mdbq/redis/getredis.py,sha256=vpBuNc22uj9Vr-_Dh25_wpwWM1e-072EAAIBdB_IpL0,23494
27
27
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
28
- mdbq-4.0.52.dist-info/METADATA,sha256=OLb8hSRm0jr5HU-n2MJ0JILsojpcmcbGBCJCaPdZHN4,364
29
- mdbq-4.0.52.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
30
- mdbq-4.0.52.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
31
- mdbq-4.0.52.dist-info/RECORD,,
28
+ mdbq-4.0.54.dist-info/METADATA,sha256=uWfsvpl8sPzKxK3SEDqV7tRNUOxyOxJClVHdTPplA4g,364
29
+ mdbq-4.0.54.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
30
+ mdbq-4.0.54.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
31
+ mdbq-4.0.54.dist-info/RECORD,,
File without changes