mdbq 1.2.7__tar.gz → 1.2.9__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 (45) hide show
  1. {mdbq-1.2.7 → mdbq-1.2.9}/PKG-INFO +1 -1
  2. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/aggregation/query_data.py +11 -6
  3. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/mysql/mysql.py +12 -10
  4. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq.egg-info/PKG-INFO +1 -1
  5. {mdbq-1.2.7 → mdbq-1.2.9}/setup.py +1 -1
  6. {mdbq-1.2.7 → mdbq-1.2.9}/README.txt +0 -0
  7. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/__init__.py +0 -0
  8. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/__version__.py +0 -0
  9. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/aggregation/__init__.py +0 -0
  10. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/aggregation/aggregation.py +0 -0
  11. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/aggregation/df_types.py +0 -0
  12. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/aggregation/mysql_types.py +0 -0
  13. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/aggregation/optimize_data.py +0 -0
  14. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/bdup/__init__.py +0 -0
  15. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/bdup/bdup.py +0 -0
  16. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/clean/__init__.py +0 -0
  17. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/clean/data_clean.py +0 -0
  18. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/company/__init__.py +0 -0
  19. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/company/copysh.py +0 -0
  20. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/config/__init__.py +0 -0
  21. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/config/get_myconf.py +0 -0
  22. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/config/products.py +0 -0
  23. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/config/set_support.py +0 -0
  24. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/config/update_conf.py +0 -0
  25. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/dataframe/__init__.py +0 -0
  26. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/dataframe/converter.py +0 -0
  27. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/log/__init__.py +0 -0
  28. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/log/mylogger.py +0 -0
  29. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/mongo/__init__.py +0 -0
  30. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/mongo/mongo.py +0 -0
  31. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/mysql/__init__.py +0 -0
  32. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/mysql/s_query.py +0 -0
  33. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/mysql/year_month_day.py +0 -0
  34. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/other/__init__.py +0 -0
  35. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/other/porxy.py +0 -0
  36. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/other/pov_city.py +0 -0
  37. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/other/ua_sj.py +0 -0
  38. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/pbix/__init__.py +0 -0
  39. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/pbix/pbix_refresh.py +0 -0
  40. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/pbix/refresh_all.py +0 -0
  41. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq/spider/__init__.py +0 -0
  42. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq.egg-info/SOURCES.txt +0 -0
  43. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq.egg-info/dependency_links.txt +0 -0
  44. {mdbq-1.2.7 → mdbq-1.2.9}/mdbq.egg-info/top_level.txt +0 -0
  45. {mdbq-1.2.7 → mdbq-1.2.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 1.2.7
3
+ Version: 1.2.9
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -388,19 +388,22 @@ class GroupBy:
388
388
  self.data_tgyj['商品id图片对照表'],
389
389
  self.data_tgyj['商品成本']) # 这里不要加逗号
390
390
  pic['商品id'] = pic['商品id'].astype(str)
391
- df = pd.merge(idbm, pic, how='left', left_on='宝贝id', right_on='商品id')
391
+ df = pd.merge(idbm, pic, how='left', left_on='宝贝id', right_on='商品id') # id 编码表合并图片表
392
392
  df = df[['宝贝id', '商家编码', '商品图片']]
393
- df = pd.merge(df, cost, how='left', left_on='商家编码', right_on='款号')
393
+ df = pd.merge(df, cost, how='left', left_on='商家编码', right_on='款号') # df 合并商品成本表
394
394
  df = df[['宝贝id', '商家编码', '商品图片', '成本价']]
395
- df = pd.merge(tg, df, how='left', left_on='商品id', right_on='宝贝id')
395
+ df = pd.merge(tg, df, how='left', left_on='商品id', right_on='宝贝id') # 推广表合并 df
396
396
  df.drop(labels='宝贝id', axis=1, inplace=True)
397
397
  if bb_tg is True:
398
398
  # 生意经合并推广表,完整的数据表,包含全店所有推广、销售数据
399
399
  df = pd.merge(syj, df, how='left', left_on=['日期', '宝贝id'], right_on=['日期', '商品id'])
400
+ df.drop(labels='商品id', axis=1, inplace=True) # 因为生意经中的宝贝 id 列才是完整的
401
+ df.rename(columns={'宝贝id': '商品id'}, inplace=True)
402
+ # df.to_csv('/Users/xigua/Downloads/test.csv', encoding='utf-8_sig', index=False, header=True)
400
403
  else:
401
404
  # 推广表合并生意经 , 以推广数据为基准,销售数据不齐全
402
405
  df = pd.merge(df, syj, how='left', left_on=['日期', '商品id'], right_on=['日期', '宝贝id'])
403
- df.drop(labels='宝贝id', axis=1, inplace=True)
406
+ df.drop(labels='宝贝id', axis=1, inplace=True)
404
407
  df.drop_duplicates(subset=['日期', '商品id', '花费', '销售额'], keep='last', inplace=True, ignore_index=True)
405
408
  df['成本价'] = df['成本价'].astype('float64')
406
409
  df['商品成本'] = df.apply(lambda x: (x['成本价'] + x['销售额']/x['销售量'] * 0.11 + 6) * x['销售量'] if x['销售量'] > 0 else 0, axis=1)
@@ -425,6 +428,8 @@ class GroupBy:
425
428
  path = os.path.join(self.output, path)
426
429
  if not os.path.exists(path):
427
430
  os.makedirs(path)
431
+ if filename.endswith('.csv'):
432
+ filename = filename[:-4]
428
433
  if st_ascend and ascend:
429
434
  try:
430
435
  df.sort_values(st_ascend, ascending=ascend, ignore_index=True, inplace=True)
@@ -510,7 +515,7 @@ def data_aggregation(service_databases=[{}]):
510
515
  {
511
516
  '数据库名': '聚合数据',
512
517
  '集合名': '宝贝主体报表',
513
- '唯一主键': ['日期', '推广渠道', '营销场景', '商品id'],
518
+ '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费'],
514
519
  '数据主体': sdq.tg_wxt(),
515
520
  },
516
521
  {
@@ -547,7 +552,7 @@ def data_aggregation(service_databases=[{}]):
547
552
  for items in data_dict: # 遍历返回结果
548
553
  db_name, table_name, unique_key_list, df = items['数据库名'], items['集合名'], items['唯一主键'], items['数据主体']
549
554
  df = g.groupby(df=df, table_name=table_name, is_maximize=True) # 2. 聚合数据
550
- # g.as_csv(df=df, filename=table_name + '.csv')
555
+ g.as_csv(df=df, filename=table_name + '.csv') # 导出 csv
551
556
  m.df_to_mysql(
552
557
  df=df,
553
558
  db_name=db_name,
@@ -9,11 +9,7 @@ import warnings
9
9
  import pymysql
10
10
  import numpy as np
11
11
  import pandas as pd
12
- import sqlalchemy.types
13
- from macholib.mach_o import rpath_command
14
- from more_itertools.more import iequals
15
- from pandas.core.dtypes.common import INT64_DTYPE
16
- from sqlalchemy import create_engine
12
+ # from sqlalchemy import create_engine
17
13
  import os
18
14
  import calendar
19
15
  from mdbq.config import get_myconf
@@ -195,7 +191,6 @@ class MysqlUpload:
195
191
  datas = df.to_dict(orient='records')
196
192
  for data in datas:
197
193
  # data 是传进来待处理的数据, 不是数据库数据
198
- # print(data)
199
194
  # data 示例: {'日期': Timestamp('2024-08-27 00:00:00'), '推广费余额': 33299, '品销宝余额': 2930.73, '短信剩余': 67471}
200
195
  try:
201
196
  cols = ', '.join(f"`{item}`" for item in data.keys()) # 列名需要转义
@@ -236,17 +231,24 @@ class MysqlUpload:
236
231
  # sql = f"SELECT {unique_keys} FROM `{table_name}` WHERE `创建时间` = '2014-09-19 14:32:33'"
237
232
  cursor.execute(sql)
238
233
  results = cursor.fetchall() # results 是数据库取出的数据
239
- if results: # 有数据返回,再进行增量更新检查
234
+ if results: # 有数据返回,再进行增量检查
240
235
  for result in results: # results 是数据库数据, data 是传进来的数据
241
236
  not_change_col = []
242
237
  change_values = []
243
238
  for col in update_col:
244
239
  # 因为 mysql 里面有 decimal 数据类型,要移除末尾的 0 再做比较(df 默认将 5.00 小数截断为 5.0)
245
- if str(data[col]).rstrip('0') != str(result[col]).rstrip('0'): # 传进来的数据和数据库比较, 有变化
246
- # print(f'{col} 列的值有变化,{str(data[col]) } != {str(result[col])}')
240
+ df_value = str(data[col])
241
+ mysql_value = str(result[col])
242
+ if '.' in df_value:
243
+ df_value = re.sub(r'0+$', '', df_value)
244
+ df_value = re.sub(r'\.$', '', df_value)
245
+ if '.' in mysql_value:
246
+ mysql_value = re.sub(r'0+$', '', mysql_value)
247
+ mysql_value = re.sub(r'\.$', '', mysql_value)
248
+ if df_value != mysql_value: # 传进来的数据和数据库比较, 有变化
249
+ # print(f'{data['日期']}{data['商品id']}{col} 列的值有变化,{str(data[col])} != {str(result[col])}')
247
250
  change_values += [f"`{col}` = '{str(data[col])}'"]
248
251
  not_change_col += [item for item in update_col if item != col]
249
-
250
252
  # change_values 是 df 传进来且和数据库对比后,发生了变化的数据,值示例: [`品销宝余额` = '9999.0', `短信剩余` = '888']
251
253
  if change_values: # change_values 有数据返回,表示值需要更新
252
254
  not_change_values = [f"`{col}` = '{str(data[col])}'" for col in not_change_col]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 1.2.7
3
+ Version: 1.2.9
4
4
  Home-page: https://pypi.org/project/mdbsql
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='1.2.7',
6
+ version='1.2.9',
7
7
  author='xigua, ',
8
8
  author_email="2587125111@qq.com",
9
9
  url='https://pypi.org/project/mdbsql',
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