mdbq 3.3.9__py3-none-any.whl → 3.3.11__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.
@@ -1164,6 +1164,141 @@ class MysqlDatasQuery:
1164
1164
  )
1165
1165
  return True
1166
1166
 
1167
+ def spph(self, db_name='聚合数据', table_name='天猫_商品排行'):
1168
+ """ """
1169
+ start_date, end_date = self.months_data(num=self.months)
1170
+ projection = {}
1171
+ __res = []
1172
+ for year in range(2024, datetime.datetime.today().year+1):
1173
+ df = self.download.data_to_df(
1174
+ db_name='生意参谋3',
1175
+ table_name=f'商品排行_{year}',
1176
+ start_date=start_date,
1177
+ end_date=end_date,
1178
+ projection=projection,
1179
+ )
1180
+ __res.append(df)
1181
+ df = pd.concat(__res, ignore_index=True)
1182
+
1183
+ projection = {}
1184
+ df_set = self.download.data_to_df(
1185
+ db_name='属性设置3',
1186
+ table_name=f'货品年份基准',
1187
+ start_date=start_date,
1188
+ end_date=end_date,
1189
+ projection=projection,
1190
+ )
1191
+ df.drop_duplicates(
1192
+ subset=['日期', '店铺名称', '商品id', '商品访客数'], keep='last',
1193
+ inplace=True, ignore_index=True)
1194
+ df_set['商品id'] = df_set['商品id'].astype('int64')
1195
+ df_set = df_set[['商品id', '上市年份']]
1196
+ df['商品id'] = df['商品id'].astype('int64')
1197
+ df_set.sort_values('商品id', ascending=False, ignore_index=True, inplace=True)
1198
+
1199
+ def check_year(item_id):
1200
+ for item in df_set.to_dict(orient='records'):
1201
+ if item_id > item['商品id']:
1202
+ return item['上市年份']
1203
+
1204
+ df['上市年份'] = df['商品id'].apply(lambda x: check_year(x))
1205
+ p = df.pop('上市年份')
1206
+ df.insert(loc=7, column='上市年月', value=p)
1207
+ df['上市年份_f'] = df['上市年月'].apply(lambda x: '0' if x == '历史悠久' else re.findall(r'(\d+)年', x)[0])
1208
+ p = df.pop('上市年份_f')
1209
+ df.insert(loc=7, column='上市年份_f', value=p)
1210
+
1211
+ def check_jijie(string):
1212
+ pattern = re.findall(r'\d+年(\d+)月', string)
1213
+ if not pattern:
1214
+ return '-'
1215
+ pattern = pattern[0]
1216
+ if 0 < int(pattern) < 4:
1217
+ return '春'
1218
+ elif 4 < int(pattern) < 6:
1219
+ return '夏'
1220
+ elif 6 < int(pattern) < 9:
1221
+ return '秋'
1222
+ else:
1223
+ return '冬'
1224
+
1225
+ df['上市季节'] = df['上市年月'].apply(lambda x: check_jijie(x))
1226
+ p = df.pop('上市季节')
1227
+ df.insert(loc=9, column='上市季节', value=p)
1228
+
1229
+ set_typ = {
1230
+ '商品id': 'BIGINT',
1231
+ '店铺名称': 'varchar(100)',
1232
+ '商品名称': 'varchar(255)',
1233
+ '主商品id': 'BIGINT',
1234
+ '商品类型': 'varchar(50)',
1235
+ '货号': 'varchar(50)',
1236
+ '商品状态': 'varchar(50)',
1237
+ '商品标签': 'varchar(50)',
1238
+ '商品访客数': 'int',
1239
+ '商品浏览量': 'int',
1240
+ '平均停留时长': 'decimal(10,2)',
1241
+ '商品详情页跳出率': 'decimal(6,4)',
1242
+ '商品收藏人数': 'smallint',
1243
+ '商品加购件数': 'smallint',
1244
+ '商品加购人数': 'smallint',
1245
+ '下单买家数': 'smallint',
1246
+ '下单件数': 'smallint',
1247
+ '下单金额': 'decimal(10,2)',
1248
+ '下单转化率': 'decimal(10,4)',
1249
+ '支付买家数': 'smallint',
1250
+ '支付件数': 'int',
1251
+ '支付金额': 'decimal(12,2)',
1252
+ '商品支付转化率': 'decimal(10,4)',
1253
+ '支付新买家数': 'smallint',
1254
+ '支付老买家数': 'smallint',
1255
+ '老买家支付金额': 'decimal(10,2)',
1256
+ '聚划算支付金额': 'decimal(10,2)',
1257
+ '访客平均价值': 'decimal(10,2)',
1258
+ '成功退款金额': 'decimal(10,2)',
1259
+ '竞争力评分': 'smallint',
1260
+ '年累计支付金额': 'decimal(12,2)',
1261
+ '月累计支付金额': 'decimal(12,2)',
1262
+ '月累计支付件数': 'mediumint',
1263
+ '搜索引导支付转化率': 'decimal(6,4)',
1264
+ '搜索引导访客数': 'smallint',
1265
+ '搜索引导支付买家数': 'smallint',
1266
+ '结构化详情引导转化率': 'decimal(6,4)',
1267
+ '结构化详情引导成交占比': 'decimal(6,4)',
1268
+ '更新时间': 'timestamp',
1269
+ '上市年份': 'varchar(100)',
1270
+ }
1271
+ min_date = df['日期'].min().strftime("%Y-%m-%d")
1272
+ max_date = df['日期'].max().strftime("%Y-%m-%d")
1273
+ now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
1274
+ print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name} -> {min_date}~{max_date}')
1275
+ m_engine.df_to_mysql(
1276
+ df=df,
1277
+ db_name=db_name,
1278
+ table_name=table_name,
1279
+ # icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
1280
+ move_insert=True, # 先删除,再插入
1281
+ df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
1282
+ drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
1283
+ count=None,
1284
+ filename=None, # 用来追踪处理进度
1285
+ reset_id=True, # 是否重置自增列
1286
+ set_typ=set_typ,
1287
+ )
1288
+ company_engine.df_to_mysql(
1289
+ df=df,
1290
+ db_name=db_name,
1291
+ table_name=table_name,
1292
+ # icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
1293
+ move_insert=True, # 先删除,再插入
1294
+ df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
1295
+ drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
1296
+ count=None,
1297
+ filename=None, # 用来追踪处理进度
1298
+ reset_id=True, # 是否重置自增列
1299
+ set_typ=set_typ,
1300
+ )
1301
+
1167
1302
  # @try_except
1168
1303
  def dplyd(self, db_name='聚合数据', table_name='店铺流量来源构成'):
1169
1304
  """ 新旧版取的字段是一样的 """
@@ -3489,12 +3624,6 @@ def date_table():
3489
3624
  df.rename(columns={'index': 'id'}, inplace=True)
3490
3625
  df['id'] = df['id'].apply(lambda x: x + 1)
3491
3626
 
3492
- m = mysql.MysqlUpload(
3493
- username=username,
3494
- password=password,
3495
- host=host,
3496
- port=port,
3497
- )
3498
3627
  set_typ = {
3499
3628
  '日期': 'date',
3500
3629
  '年': 'varchar(50)',
@@ -3509,7 +3638,18 @@ def date_table():
3509
3638
  '索引': 'int',
3510
3639
  '月索引': 'int',
3511
3640
  }
3512
- m.df_to_mysql(
3641
+ m_engine.df_to_mysql(
3642
+ df=df,
3643
+ db_name='聚合数据',
3644
+ table_name='日期表',
3645
+ move_insert=True, # 先删除,再插入
3646
+ df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
3647
+ drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
3648
+ count=None,
3649
+ filename=None, # 用来追踪处理进度
3650
+ set_typ=set_typ,
3651
+ )
3652
+ company_engine.df_to_mysql(
3513
3653
  df=df,
3514
3654
  db_name='聚合数据',
3515
3655
  table_name='日期表',
@@ -3566,6 +3706,16 @@ def query2(months=1, less_dict=[]):
3566
3706
  sdq.deeplink(db_name='聚合数据', table_name='达摩盘_deeplink人群洞察')
3567
3707
 
3568
3708
 
3709
+ def query3(months=1, less_dict=[]):
3710
+ if months == 0:
3711
+ print(f'months 不建议为 0 ')
3712
+ return
3713
+ sdq = MysqlDatasQuery() # 实例化数据处理类
3714
+ sdq.months = months # 设置数据周期, 1 表示近 2 个月
3715
+ sdq.update_service = True # 调试时加,true: 将数据写入 mysql 服务器
3716
+ sdq.spph(db_name='聚合数据', table_name='天猫_商品排行')
3717
+
3718
+
3569
3719
  def main(days=150, months=3):
3570
3720
  """
3571
3721
  days: 清理聚合数据的日期长度
@@ -3607,7 +3757,7 @@ def main(days=150, months=3):
3607
3757
  # future.result()
3608
3758
 
3609
3759
  # 2. 数据聚合
3610
- query_list = [query1, query2]
3760
+ query_list = [query1, query2, query3]
3611
3761
  # 使用 ThreadPoolExecutor 来并行运行
3612
3762
  with concurrent.futures.ThreadPoolExecutor() as executor:
3613
3763
  for func_query in query_list:
@@ -3648,10 +3798,12 @@ if __name__ == '__main__':
3648
3798
  # ),
3649
3799
  # }
3650
3800
 
3651
- # 3. 清理聚合数据
3652
- optimize_data.op_data(
3653
- db_name_lists=['聚合数据'],
3654
- days=100, # 清理聚合数据的日期长度
3655
- is_mongo=False,
3656
- is_mysql=True,
3657
- )
3801
+ # # 3. 清理聚合数据
3802
+ # optimize_data.op_data(
3803
+ # db_name_lists=['聚合数据'],
3804
+ # days=100, # 清理聚合数据的日期长度
3805
+ # is_mongo=False,
3806
+ # is_mysql=True,
3807
+ # )
3808
+
3809
+ query3(months=2, less_dict=[])
mdbq/config/products.py CHANGED
@@ -134,19 +134,18 @@ class Products:
134
134
  host=host,
135
135
  port=port,
136
136
  )
137
- for dict_data in df.to_dict(orient='records'):
138
- m_engine.dict_to_mysql(
139
- db_name='属性设置3',
140
- table_name='货品年份基准',
141
- dict_data=dict_data,
142
- # icm_update=['日期', '店铺名称', '宝贝id'], # 唯一组合键
143
- unique_main_key=['商品id'],
144
- set_typ={
145
- '商品id': 'bigint',
146
- '平台': 'varchar(100)',
147
- '上市年份': 'varchar(100)',
148
- },
149
- )
137
+ m_engine.insert_many_dict(
138
+ db_name='属性设置3',
139
+ table_name='货品年份基准',
140
+ dict_data_list=df.to_dict(orient='records'),
141
+ # icm_update=['日期', '店铺名称', '宝贝id'], # 唯一组合键
142
+ unique_main_key=['商品id'],
143
+ set_typ={
144
+ '商品id': 'bigint',
145
+ '平台': 'varchar(100)',
146
+ '上市年份': 'varchar(100)',
147
+ },
148
+ )
150
149
 
151
150
  def market_date(self, product_id: int):
152
151
  try:
mdbq/mysql/mysql.py CHANGED
@@ -477,6 +477,7 @@ class MysqlUpload:
477
477
  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
478
478
  # 处理插入的数据
479
479
  for dict_data in dict_data_list:
480
+ # print(dict_data)
480
481
  dtypes, dict_data = self.cover_dict_dtypes(dict_data=dict_data) # {'店铺名称': 'varchar(100)',...}
481
482
  if icm_update:
482
483
  """ 使用增量更新: 需确保 icm_update['主键'] 传进来的列组合是数据表中唯一,值不会发生变化且不会重复,否则可能产生覆盖 """
@@ -535,8 +536,7 @@ class MysqlUpload:
535
536
  sql = f"INSERT INTO `{table_name}` ({cols}) VALUES ({values});"
536
537
  cursor.execute(sql)
537
538
  connection.commit() # 提交数据库
538
- connection.close()
539
- return
539
+ continue
540
540
 
541
541
  # 构建 keys
542
542
  keys_data = ', '.join([f'`{str(item)}`' for item in dict_data.keys()])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 3.3.9
3
+ Version: 3.3.11
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -3,12 +3,12 @@ mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
3
3
  mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
4
4
  mdbq/aggregation/aggregation.py,sha256=-yzApnlqSN2L0E1YMu5ml-W827qpKQvWPCOI7jj2kzY,80264
5
5
  mdbq/aggregation/optimize_data.py,sha256=RXIv7cACCgYyehAxMjUYi_S7rVyjIwXKWMaM3nduGtA,3068
6
- mdbq/aggregation/query_data.py,sha256=o23iwJJSYkBz96iIaQVGq3tVY8ko9xuk3YjVnSNVIxE,166436
6
+ mdbq/aggregation/query_data.py,sha256=_FgC3AG9uLiBhyNW38nSVnhsXXp5CJD-CKjNJP5E6Ro,173507
7
7
  mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
8
8
  mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
9
9
  mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
10
10
  mdbq/config/myconfig.py,sha256=EGymTlAimtHIDJ9egCtOehBEPOj6rea504kvsEZu64o,854
11
- mdbq/config/products.py,sha256=Ab6eaAUMUtjRL8z9NvYukyCjp3nAi4OYISY_IdPhAJ0,6279
11
+ mdbq/config/products.py,sha256=Muj9B0pdFo16aTmE_7mbWgECpxdLZrl6UPsNWMK80eU,6202
12
12
  mdbq/config/set_support.py,sha256=xkZCX6y9Bq1ppBpJAofld4B2YtchA7fl0eT3dx3CrSI,777
13
13
  mdbq/dataframe/__init__.py,sha256=2HtCN8AdRj53teXDqzysC1h8aPL-mMFy561ESmhehGQ,22
14
14
  mdbq/dataframe/converter.py,sha256=lETYhT7KXlWzWwqguqhk6vI6kj4rnOBEW1lhqKy2Abc,5035
@@ -17,7 +17,7 @@ mdbq/log/mylogger.py,sha256=oaT7Bp-Hb9jZt52seP3ISUuxVcI19s4UiqTeouScBO0,3258
17
17
  mdbq/mongo/__init__.py,sha256=SILt7xMtQIQl_m-ik9WLtJSXIVf424iYgCfE_tnQFbw,13
18
18
  mdbq/mongo/mongo.py,sha256=M9DUeUCMPDngkwn9-ui0uTiFrvfNU1kLs22s5SmoNm0,31899
19
19
  mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
20
- mdbq/mysql/mysql.py,sha256=Ekqg-svOi2kbPIBBoEtL9Eg4-LJqyqoLprSSUy17MWU,99360
20
+ mdbq/mysql/mysql.py,sha256=5c3hY-wHP24krhgbMHYlV-mbJNhnq5F8AeRUczWLjog,99358
21
21
  mdbq/mysql/recheck_mysql.py,sha256=ppBTfBLgkRWirMVZ31e_ZPULiGPJU7K3PP9G6QBZ3QI,8605
22
22
  mdbq/mysql/s_query.py,sha256=6L5Cp90zq13noZHjzSA5mqms_hD01c8GO1_NfbYDu6w,9252
23
23
  mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
@@ -33,7 +33,7 @@ mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
33
33
  mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,7192
34
34
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
35
35
  mdbq/spider/aikucun.py,sha256=zOacjrJ3MvToyuugA68xB-oN6RKj8K3GxMKudnln9EA,22207
36
- mdbq-3.3.9.dist-info/METADATA,sha256=Hxz93TyF4f66Q4saABFf4zFEuQGP97GzJMTB35-caLE,243
37
- mdbq-3.3.9.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
38
- mdbq-3.3.9.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
39
- mdbq-3.3.9.dist-info/RECORD,,
36
+ mdbq-3.3.11.dist-info/METADATA,sha256=b5tyR98uaR4rJQqSfISDixvaUGQDPYvFYc6X1X0JEGY,244
37
+ mdbq-3.3.11.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
38
+ mdbq-3.3.11.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
39
+ mdbq-3.3.11.dist-info/RECORD,,
File without changes