mdbq 2.7.4__py3-none-any.whl → 2.7.6__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/aggregation/mysql_types.py +2 -2
- mdbq/aggregation/optimize_data.py +3 -3
- mdbq/aggregation/query_data.py +3 -3
- mdbq/clean/clean_upload.py +17 -4
- mdbq/company/copysh.py +52 -45
- {mdbq-2.7.4.dist-info → mdbq-2.7.6.dist-info}/METADATA +1 -1
- {mdbq-2.7.4.dist-info → mdbq-2.7.6.dist-info}/RECORD +9 -9
- {mdbq-2.7.4.dist-info → mdbq-2.7.6.dist-info}/WHEEL +0 -0
- {mdbq-2.7.4.dist-info → mdbq-2.7.6.dist-info}/top_level.txt +0 -0
mdbq/aggregation/mysql_types.py
CHANGED
@@ -152,11 +152,11 @@ def mysql_all_dtypes(db_name=None, table_name=None, path=None):
|
|
152
152
|
"""
|
153
153
|
username, password, host, port, service_name = None, None, None, None, None
|
154
154
|
conf = myconfig.main()
|
155
|
-
if socket.gethostname()
|
155
|
+
if socket.gethostname() in ['xigua_lx', 'xigua1', 'MacBookPro']:
|
156
156
|
data = conf['Windows']['xigua_lx']['mysql']['local']
|
157
157
|
username, password, host, port = data['username'], data['password'], data['host'], data['port']
|
158
158
|
service_name = 'xigua_lx' # 影响 mysql_types_xigua_lx.json 文件名
|
159
|
-
elif socket.gethostname()
|
159
|
+
elif socket.gethostname() in ['company', 'Mac2.local']:
|
160
160
|
data = conf['Windows']['company']['mysql']['local']
|
161
161
|
username, password, host, port = data['username'], data['password'], data['host'], data['port']
|
162
162
|
service_name = 'company' # 影响 mysql_types_company.json 文件名
|
@@ -11,12 +11,12 @@ import platform
|
|
11
11
|
对指定数据库所有冗余数据进行清理
|
12
12
|
"""
|
13
13
|
username, password, host, port, service_database = None, None, None, None, None,
|
14
|
-
if socket.gethostname()
|
14
|
+
if socket.gethostname() in ['xigua_lx', 'xigua1', 'MacBookPro']:
|
15
15
|
conf = myconfig.main()
|
16
16
|
data = conf['Windows']['xigua_lx']['mysql']['local']
|
17
17
|
username, password, host, port = data['username'], data['password'], data['host'], data['port']
|
18
18
|
service_database = {'xigua_lx': 'mysql'}
|
19
|
-
elif socket.gethostname()
|
19
|
+
elif socket.gethostname() in ['company', 'Mac2.local']:
|
20
20
|
conf = myconfig.main()
|
21
21
|
data = conf['Windows']['company']['mysql']['local']
|
22
22
|
username, password, host, port = data['username'], data['password'], data['host'], data['port']
|
@@ -74,7 +74,7 @@ def restart_mongodb():
|
|
74
74
|
def op_data(db_name_lists, days: int = 63, is_mongo=True, is_mysql=True):
|
75
75
|
""" """
|
76
76
|
|
77
|
-
if socket.gethostname() == 'xigua_lx' or socket.gethostname() == 'xigua1' or socket.gethostname() == '
|
77
|
+
if socket.gethostname() == 'xigua_lx' or socket.gethostname() == 'xigua1' or socket.gethostname() == 'Mac2.local':
|
78
78
|
# Mysql
|
79
79
|
if is_mysql:
|
80
80
|
s = mysql.OptimizeDatas(username=username, password=password, host=host, port=port)
|
mdbq/aggregation/query_data.py
CHANGED
@@ -26,12 +26,12 @@ import os
|
|
26
26
|
|
27
27
|
"""
|
28
28
|
username, password, host, port, service_database = None, None, None, None, None,
|
29
|
-
if socket.gethostname()
|
29
|
+
if socket.gethostname() in ['xigua_lx', 'xigua1', 'MacBookPro']:
|
30
30
|
conf = myconfig.main()
|
31
31
|
conf_data = conf['Windows']['xigua_lx']['mysql']['local']
|
32
32
|
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
33
33
|
service_database = {'xigua_lx': 'mysql'}
|
34
|
-
elif socket.gethostname()
|
34
|
+
elif socket.gethostname() in ['company', 'Mac2.local']:
|
35
35
|
conf = myconfig.main()
|
36
36
|
conf_data = conf['Windows']['company']['mysql']['local']
|
37
37
|
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
@@ -2277,7 +2277,7 @@ def main():
|
|
2277
2277
|
|
2278
2278
|
if __name__ == '__main__':
|
2279
2279
|
data_aggregation(
|
2280
|
-
months=
|
2280
|
+
months=3,
|
2281
2281
|
is_juhe=True, # 生成聚合表
|
2282
2282
|
# less_dict=['天猫_品销宝账户报表'], # 单独聚合某一个数据库
|
2283
2283
|
)
|
mdbq/clean/clean_upload.py
CHANGED
@@ -46,12 +46,12 @@ upload_path = os.path.join(D_PATH, '数据上传中心') # 此目录位于下
|
|
46
46
|
source_path3 = os.path.join(Data_Path, '原始文件3') # 此目录保存下载并清洗过的文件,作为数据库备份
|
47
47
|
|
48
48
|
username, password, host, port, service_database = None, None, None, None, None,
|
49
|
-
if socket.gethostname()
|
49
|
+
if socket.gethostname() in ['xigua_lx', 'xigua1', 'MacBookPro']:
|
50
50
|
conf = myconfig.main()
|
51
51
|
conf_data = conf['Windows']['xigua_lx']['mysql']['local']
|
52
52
|
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
53
53
|
service_database = {'xigua_lx': 'mysql'}
|
54
|
-
elif socket.gethostname()
|
54
|
+
elif socket.gethostname() in ['company', 'Mac2.local']:
|
55
55
|
conf = myconfig.main()
|
56
56
|
conf_data = conf['Windows']['company']['mysql']['local']
|
57
57
|
username, password, host, port = conf_data['username'], conf_data['password'], conf_data['host'], conf_data['port']
|
@@ -440,7 +440,7 @@ class DataClean:
|
|
440
440
|
sheets4 = ['账户', '推广计划', '推广单元', '创意', '品牌流量包', '定向人群'] # 品销宝
|
441
441
|
file_name4 = os.path.splitext(name)[0] # 明星店铺报表
|
442
442
|
for sheet4 in sheets4:
|
443
|
-
df = pd.read_excel(os.path.join(root, name), sheet_name=sheet4, header=0, engine='
|
443
|
+
df = pd.read_excel(os.path.join(root, name), sheet_name=sheet4, header=0, engine='openpyxl')
|
444
444
|
if len(df) == 0:
|
445
445
|
print(f'{name} 报表数据为空')
|
446
446
|
os.remove(os.path.join(root, name))
|
@@ -452,6 +452,8 @@ class DataClean:
|
|
452
452
|
shop_name = re.findall(r'明星店铺_([\u4e00-\u9fffA-Za-z]+店)', name)[0]
|
453
453
|
df.insert(loc=1, column='店铺名称', value=shop_name)
|
454
454
|
df.insert(loc=2, column='报表类型', value=sheet4)
|
455
|
+
if '访客触达率' not in df.columns.tolist():
|
456
|
+
df['访客触达率'] = '0'
|
455
457
|
df.fillna(0, inplace=True)
|
456
458
|
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore') # 转换日期列
|
457
459
|
# min_clm = str(df['日期'].min()).split(' ')[0]
|
@@ -460,10 +462,21 @@ class DataClean:
|
|
460
462
|
# 以sheet名进一步创建子文件夹
|
461
463
|
# root_new = os.path.join(self.source_path, '推广报表/品销宝', sheet4)
|
462
464
|
self.save_to_csv(df, upload_path, new_file_name4)
|
465
|
+
if not db_name or not collection_name:
|
466
|
+
continue
|
467
|
+
# 一定要单独处理品销宝报表,因为 1 表包含 6个 sheet,都要添加
|
468
|
+
self.datas.append(
|
469
|
+
{
|
470
|
+
'数据库名': db_name,
|
471
|
+
'集合名称': collection_name,
|
472
|
+
'数据主体': df,
|
473
|
+
'文件名': name,
|
474
|
+
}
|
475
|
+
)
|
463
476
|
os.remove(os.path.join(root, name))
|
464
477
|
|
465
478
|
# 将数据传入 self.datas 等待更新进数据库
|
466
|
-
if not db_name or not collection_name:
|
479
|
+
if not db_name or not collection_name or '品销宝' in collection_name:
|
467
480
|
# print(f'db_name/collection_name 不能为空')
|
468
481
|
continue
|
469
482
|
self.datas.append(
|
mdbq/company/copysh.py
CHANGED
@@ -10,22 +10,43 @@ import shutil
|
|
10
10
|
import time
|
11
11
|
import re
|
12
12
|
import socket
|
13
|
-
from dateutil.utils import today
|
14
13
|
from mdbq.bdup import bdup
|
15
|
-
from mdbq.aggregation import aggregation
|
16
14
|
from mdbq.aggregation import query_data
|
17
15
|
from mdbq.aggregation import optimize_data
|
18
|
-
from mdbq.config import update_conf
|
19
|
-
from mdbq.config import get_myconf
|
20
16
|
from mdbq.config import set_support
|
21
|
-
from mdbq.config import
|
17
|
+
from mdbq.config import myconfig
|
22
18
|
from mdbq.mysql import mysql
|
23
19
|
from mdbq.pbix import refresh_all
|
24
|
-
from mdbq.other import sku_picture
|
25
20
|
from mdbq.clean import clean_upload
|
26
21
|
warnings.filterwarnings('ignore')
|
27
22
|
|
28
23
|
|
24
|
+
if platform.system() == 'Windows':
|
25
|
+
# windows版本
|
26
|
+
Data_Path = r'C:\同步空间\BaiduSyncdisk'
|
27
|
+
D_PATH = os.path.join(f'C:\\Users\\{getpass.getuser()}\\Downloads')
|
28
|
+
Share_Path = os.path.join(r'\\192.168.1.198\时尚事业部\01.运营部\天猫报表') # 共享文件根目录
|
29
|
+
elif platform.system() == 'Linux':
|
30
|
+
Data_Path = '数据中心'
|
31
|
+
D_PATH = 'Downloads'
|
32
|
+
if not os.path.exists(D_PATH):
|
33
|
+
os.makedirs(D_PATH)
|
34
|
+
Share_Path = '' # linux 通常是远程服务器,不需要访问共享
|
35
|
+
else:
|
36
|
+
Data_Path = f'/Users/{getpass.getuser()}/数据中心' # 使用Mac独立网络时
|
37
|
+
D_PATH = os.path.join(f'/Users/{getpass.getuser()}/Downloads')
|
38
|
+
Share_Path = os.path.join('/Volumes/时尚事业部/01.运营部/天猫报表') # 共享文件根目录
|
39
|
+
|
40
|
+
upload_path = os.path.join(D_PATH, '数据上传中心') # 此目录位于下载文件夹,将统一上传百度云备份
|
41
|
+
source_path = os.path.join(Data_Path, '原始文件3') # 此目录保存下载并清洗过的文件,作为数据库备份
|
42
|
+
if not os.path.exists(upload_path): # 数据中心根目录
|
43
|
+
os.makedirs(upload_path)
|
44
|
+
if not os.path.exists(Data_Path): # 数据中心根目录
|
45
|
+
os.makedirs(Data_Path)
|
46
|
+
if not os.path.exists(source_path): # 原始文件
|
47
|
+
os.makedirs(source_path)
|
48
|
+
|
49
|
+
|
29
50
|
class TbFiles:
|
30
51
|
"""
|
31
52
|
用于在公司台式机中 定时同步pandas数据源文件到共享
|
@@ -289,31 +310,6 @@ class TbFiles:
|
|
289
310
|
return False
|
290
311
|
|
291
312
|
|
292
|
-
class UpdateMysql:
|
293
|
-
def __init__(self):
|
294
|
-
support_path = set_support.SetSupport(dirname='support').dirname
|
295
|
-
self.my_conf = os.path.join(support_path, '.copysh_conf')
|
296
|
-
self.ch_record = False
|
297
|
-
self.d_path = None
|
298
|
-
|
299
|
-
def check_date(self):
|
300
|
-
""" 检查公司台式机 .copysh_conf 文件中的 ch_record 值,决定是否执行更新"""
|
301
|
-
config = configparser.ConfigParser() # 初始化configparser类
|
302
|
-
try:
|
303
|
-
config.read(self.my_conf, 'UTF-8')
|
304
|
-
self.ch_record = config.get('database', 'ch_record').lower()
|
305
|
-
self.d_path = config.get('database', 'd_path')
|
306
|
-
except Exception as e:
|
307
|
-
print(e)
|
308
|
-
if self.ch_record == 'false':
|
309
|
-
return False, self.d_path
|
310
|
-
elif self.ch_record == 'true':
|
311
|
-
return True, self.d_path
|
312
|
-
else:
|
313
|
-
print(f'配置可能有误: {self.ch_record}, self.ch_record 值应为: true 或 false')
|
314
|
-
return False, self.d_path
|
315
|
-
|
316
|
-
|
317
313
|
def op_data(days: int =100):
|
318
314
|
|
319
315
|
# 清理数据库, 除了 聚合数据
|
@@ -343,28 +339,39 @@ def op_data(days: int =100):
|
|
343
339
|
|
344
340
|
|
345
341
|
def main():
|
342
|
+
if socket.gethostname() != 'company':
|
343
|
+
print(f'只可以在 company 运行')
|
344
|
+
return
|
346
345
|
t = TbFiles()
|
347
|
-
u = UpdateMysql()
|
348
346
|
while True:
|
349
|
-
|
350
|
-
|
351
|
-
|
347
|
+
system = platform.system() # 本机系统
|
348
|
+
host_name = socket.gethostname() # 本机名
|
349
|
+
conf = myconfig.main()
|
350
|
+
data = conf[system][host_name]
|
351
|
+
is_download = data['is_download'] # 读取配置, 如果是 Ture 则执行更新
|
352
|
+
|
353
|
+
if is_download:
|
354
|
+
bd_remoto_path = f'windows2/{str(datetime.date.today().strftime("%Y-%m"))}/{str(datetime.date.today())}'
|
352
355
|
b = bdup.BaiDu()
|
353
356
|
# 1. 从百度云下载文件
|
354
|
-
b.download_dir(local_path=
|
357
|
+
b.download_dir(local_path=upload_path, remote_path=bd_remoto_path)
|
355
358
|
|
356
|
-
# 2. 对文件进行清洗和上传数据库
|
357
359
|
clean_upload.main(
|
358
|
-
|
359
|
-
is_mysql = False, # 清理聚合数据
|
360
|
+
is_mysql=True, # 调试时加,False: 是否后续的聚合数据及清理
|
360
361
|
)
|
361
362
|
|
362
|
-
#
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
#
|
367
|
-
|
363
|
+
#
|
364
|
+
# # 3. 数据清理和聚合
|
365
|
+
# op_data(days=100)
|
366
|
+
|
367
|
+
# 此处不可以使用 data 更新,要使用具体键值,否则数据有覆盖
|
368
|
+
conf['Windows']['company'].update(
|
369
|
+
{
|
370
|
+
'is_download': False # 更新完成,下次需 all-datas.py 修改或者手动修改
|
371
|
+
}
|
372
|
+
)
|
373
|
+
# print(conf)
|
374
|
+
myconfig.write_back(datas=conf) # 写回文件生效
|
368
375
|
|
369
376
|
t.sleep_minutes = 5 # 同步前休眠时间
|
370
377
|
t.tb_file()
|
@@ -3,16 +3,16 @@ 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=nn8RjHuiAH68awM893wXX0Bvg0QpsEQ5RXkxFn7H-fs,77219
|
5
5
|
mdbq/aggregation/df_types.py,sha256=U9i3q2eRPTDY8qAPTw7irzu-Tlg4CIySW9uYro81wdk,8125
|
6
|
-
mdbq/aggregation/mysql_types.py,sha256=
|
7
|
-
mdbq/aggregation/optimize_data.py,sha256=
|
8
|
-
mdbq/aggregation/query_data.py,sha256=
|
6
|
+
mdbq/aggregation/mysql_types.py,sha256=o8mbhmApd1XOHttbzYtV46SjKZ2NAcIpO1FuwIyBuf4,10920
|
7
|
+
mdbq/aggregation/optimize_data.py,sha256=79uwiM2WqNNFxGpE2wKz742PRq-ZGgFjdOV0vgptHdY,3513
|
8
|
+
mdbq/aggregation/query_data.py,sha256=QpfIWX197ICqRnRhLZoKgkX9CuWvx_ryfScSaFdDN-Y,98375
|
9
9
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
10
10
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
11
11
|
mdbq/clean/__init__.py,sha256=A1d6x3L27j4NtLgiFV5TANwEkLuaDfPHDQNrPBbNWtU,41
|
12
|
-
mdbq/clean/clean_upload.py,sha256=
|
12
|
+
mdbq/clean/clean_upload.py,sha256=Mlt9h31Wa_VHhTG40jWioRqk8ELZxDEHMurLalYAJ-o,83627
|
13
13
|
mdbq/clean/data_clean.py,sha256=ucfslhqXVZoH2QaXHSAWDky0GhIvH9f4GeNaHg4SrFE,104790
|
14
14
|
mdbq/company/__init__.py,sha256=qz8F_GsP_pMB5PblgJAUAMjasuZbOEp3qQOCB39E8f0,21
|
15
|
-
mdbq/company/copysh.py,sha256=
|
15
|
+
mdbq/company/copysh.py,sha256=4VOAvHZfnhsKdeKL0Ho6q2x1OkD6nsZXRLyYdu8YAaE,18011
|
16
16
|
mdbq/company/copysh_bak.py,sha256=NvlXCBZBcO2GIT5nLRYYqhOyHWM1-1RE7DHvgbj6jmQ,19723
|
17
17
|
mdbq/company/home_sh.py,sha256=42CZ2tZIXHLl2mOl2gk2fZnjH2IHh1VJ1s3qHABjonY,18021
|
18
18
|
mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
@@ -45,7 +45,7 @@ mdbq/req_post/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
|
45
45
|
mdbq/req_post/req_tb.py,sha256=PexWSCPJNM6Tv0ol4lAWIhlOwsAr_frnjtcdSHCFiek,36179
|
46
46
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
47
47
|
mdbq/spider/aikucun.py,sha256=4Y5zd64hZUFtll8AdpUc2napDas-La-A6XzAhb2mLv0,17157
|
48
|
-
mdbq-2.7.
|
49
|
-
mdbq-2.7.
|
50
|
-
mdbq-2.7.
|
51
|
-
mdbq-2.7.
|
48
|
+
mdbq-2.7.6.dist-info/METADATA,sha256=g9yVclBoUQygTKxK2ciOGKeyaHjDsdw0um9CiD-HA-k,243
|
49
|
+
mdbq-2.7.6.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
50
|
+
mdbq-2.7.6.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
51
|
+
mdbq-2.7.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|