mdbq 4.0.26__py3-none-any.whl → 4.0.28__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.26'
1
+ VERSION = '4.0.28'
@@ -3709,7 +3709,7 @@ if __name__ == '__main__':
3709
3709
  username=username,
3710
3710
  password=password,
3711
3711
  host=host,
3712
- port=port,
3712
+ port=int(port),
3713
3713
  pool_size=10,
3714
3714
  )
3715
3715
  sdq = MysqlDatasQuery(download_manager=download_manager)
mdbq/myconf/myconf.py CHANGED
@@ -408,49 +408,63 @@ class ConfigParser:
408
408
  if file_path is None:
409
409
  self._ensure_file_open()
410
410
  file_path = self._current_file
411
+ else:
412
+ file_path = Path(file_path)
413
+
411
414
  if not self._validate_key(key):
412
415
  raise ConfigException.invalid_key_error(key, file_path, section)
416
+
413
417
  section = section or self.options.default_section
414
418
  original_lines = []
415
- if file_path.exists():
416
- with open(file_path, 'r', encoding=self.options.encoding) as file:
417
- original_lines = file.readlines()
418
- config = self.read(file_path)
419
- if section not in config:
420
- config[section] = {}
421
- if value_type is not None:
422
- try:
423
- if value_type == bool:
424
- if isinstance(value, str):
425
- value = value.lower() in ('true', 'yes', '1', 'on')
426
- else:
427
- value = bool(value)
428
- else:
429
- value = value_type(value)
430
- except (ValueError, TypeError) as e:
431
- raise ConfigException.conversion_error(value, value_type, file_path, section=section, key=key)
432
- if isinstance(value, bool):
433
- value = str(value).lower()
434
- else:
435
- value = str(value)
436
- config[section][key] = value
419
+
437
420
  try:
421
+ if file_path.exists():
422
+ with open(file_path, 'r', encoding=self.options.encoding) as file:
423
+ original_lines = file.readlines()
424
+
425
+ config = self.read(file_path)
426
+ if section not in config:
427
+ config[section] = {}
428
+
429
+ if value_type is not None:
430
+ try:
431
+ if value_type == bool:
432
+ if isinstance(value, str):
433
+ value = value.lower() in ('true', 'yes', '1', 'on')
434
+ else:
435
+ value = bool(value)
436
+ else:
437
+ value = value_type(value)
438
+ except (ValueError, TypeError) as e:
439
+ raise ConfigException.conversion_error(value, value_type, file_path, section=section, key=key)
440
+
441
+ if isinstance(value, bool):
442
+ value = str(value).lower()
443
+ else:
444
+ value = str(value)
445
+
446
+ config[section][key] = value
447
+
438
448
  file_path.parent.mkdir(parents=True, exist_ok=True)
439
449
  with open(file_path, 'w', encoding=self.options.encoding) as file:
440
450
  current_section = self.options.default_section
441
451
  section_separators = {}
452
+
442
453
  for line in original_lines:
443
454
  stripped_line = line.strip()
444
455
  if not stripped_line:
445
456
  file.write(line)
446
457
  continue
458
+
447
459
  if stripped_line.startswith('[') and stripped_line.endswith(']'):
448
460
  current_section = stripped_line[1:-1]
449
461
  file.write(line)
450
462
  continue
463
+
451
464
  if self._is_comment_line(stripped_line):
452
465
  file.write(line)
453
466
  continue
467
+
454
468
  key_value = self._split_key_value(stripped_line)
455
469
  if key_value:
456
470
  orig_key, orig_value = key_value
@@ -458,6 +472,7 @@ class ConfigParser:
458
472
  if sep in line:
459
473
  section_separators.setdefault(current_section, {})[orig_key] = sep
460
474
  break
475
+
461
476
  if current_section == section and orig_key == key:
462
477
  separator = section_separators.get(current_section, {}).get(orig_key, self.options.separators[0])
463
478
  comment = ''
@@ -471,10 +486,13 @@ class ConfigParser:
471
486
  file.write(line)
472
487
  else:
473
488
  file.write(line)
489
+
474
490
  if section not in [line.strip()[1:-1] for line in original_lines if line.strip().startswith('[') and line.strip().endswith(']')]:
475
491
  file.write(f'\n[{section}]\n')
476
492
  file.write(f'{key}={value}\n')
493
+
477
494
  self._clear_cache(str(file_path))
495
+
478
496
  except Exception as e:
479
497
  raise ConfigException.write_error(file_path, e)
480
498
 
@@ -95,7 +95,7 @@ class MySQLDeduplicator:
95
95
  self.pool = PooledDB(
96
96
  creator=pymysql,
97
97
  host=host,
98
- port=port,
98
+ port=int(port),
99
99
  user=username,
100
100
  password=password,
101
101
  charset=charset,
@@ -1363,7 +1363,7 @@ def main():
1363
1363
  username=username,
1364
1364
  password=password,
1365
1365
  host=host,
1366
- port=port,
1366
+ port=int(port),
1367
1367
  max_workers= 2,
1368
1368
  batch_size=1000,
1369
1369
  skip_system_dbs=True,
mdbq/mysql/s_query.py CHANGED
@@ -60,7 +60,7 @@ class QueryDatas:
60
60
  self.username = username
61
61
  self.password = password
62
62
  self.host = host
63
- self.port = port
63
+ self.port = int(port)
64
64
  self.charset = charset
65
65
  self.collation = collation
66
66
  self.max_retries = max_retries
@@ -999,7 +999,7 @@ def main():
999
999
  )
1000
1000
  host = 'localhost'
1001
1001
 
1002
- qd = QueryDatas(username=username, password=password, host=host, port=port)
1002
+ qd = QueryDatas(username=username, password=password, host=host, port=int(port))
1003
1003
  df = qd.data_to_df('聚合数据', '店铺流量来源构成', limit=10)
1004
1004
  print(df)
1005
1005
 
mdbq/mysql/unique_.py CHANGED
@@ -29,7 +29,7 @@ class UniqueManager:
29
29
  self.username = username
30
30
  self.password = password
31
31
  self.host = host
32
- self.port = port
32
+ self.port = int(port)
33
33
  self.pool = PooledDB(
34
34
  creator=pymysql,
35
35
  maxconnections=10,
@@ -371,7 +371,7 @@ def main():
371
371
  username=username,
372
372
  password=password,
373
373
  host=host,
374
- port=port
374
+ port=int(port)
375
375
  )
376
376
  manager.add_unique(my_databases)
377
377
 
mdbq/mysql/uploader.py CHANGED
@@ -112,7 +112,7 @@ class MySQLUploader:
112
112
  self.username = username
113
113
  self.password = password
114
114
  self.host = host
115
- self.port = port
115
+ self.port = int(port)
116
116
  self.charset = charset
117
117
  self.collation = collation
118
118
  self.max_retries = max(max_retries, 1)
@@ -1751,7 +1751,7 @@ def main():
1751
1751
  username=username,
1752
1752
  password=password,
1753
1753
  host=host,
1754
- port=port,
1754
+ port=int(port),
1755
1755
  )
1756
1756
 
1757
1757
  # 定义列和数据类型
@@ -54,7 +54,7 @@ host, port, username, password = parser.get_section_values(
54
54
  section='mysql',
55
55
  keys=['host', 'port', 'username', 'password'],
56
56
  )
57
- m_engine = mysql.MysqlUpload(username=username, password=password, host=host, port=port, charset='utf8mb4')
57
+ m_engine = mysql.MysqlUpload(username=username, password=password, host=host, port=int(port), charset='utf8mb4')
58
58
 
59
59
  if not username:
60
60
  print(f'找不到主机:')
@@ -515,7 +515,7 @@ class DownloadPicture():
515
515
  # target_service 从哪个服务器下载数据
516
516
  self.months = 0 # 下载几个月数据, 0 表示当月, 1 是上月 1 号至今
517
517
  # 实例化一个下载类
518
- self.download = s_query.QueryDatas(username=username, password=password, host=host, port=port)
518
+ self.download = s_query.QueryDatas(username=username, password=password, host=host, port=int(port))
519
519
  self.df = pd.DataFrame()
520
520
  self.headers = {'User-Agent': ua_sj.get_ua()}
521
521
  self.save_path = None
@@ -811,7 +811,7 @@ def main(service_name, database):
811
811
  tb_driver2.quit()
812
812
 
813
813
  # s.df.to_csv('/Users/xigua/Downloads/test.csv', encoding='utf-8_sig', index=False, header=True)
814
- m = mysql.MysqlUpload(username=username, password=password, host=host, port=port)
814
+ m = mysql.MysqlUpload(username=username, password=password, host=host, port=int(port))
815
815
  m.df_to_mysql(
816
816
  df=s.df,
817
817
  db_name='属性设置2',
@@ -847,7 +847,7 @@ def main3():
847
847
  def download_sku(service_name='company', database='mysql', db_name='属性设置2', table_name='商品素材下载记录', col_name='sku图片链接'):
848
848
  """ 从数据库中获取商品id信息 """
849
849
  # 实例化一个下载类
850
- download = s_query.QueryDatas(username=username, password=password, host=host, port=port)
850
+ download = s_query.QueryDatas(username=username, password=password, host=host, port=int(port))
851
851
  projection = {
852
852
  '宝贝id': 1,
853
853
  '商家编码': 1,
@@ -890,7 +890,7 @@ def download_sku(service_name='company', database='mysql', db_name='属性设置
890
890
  tb_driver2.quit()
891
891
 
892
892
  # 回传数据库
893
- m = mysql.MysqlUpload(username=username, password=password, host=host, port=port)
893
+ m = mysql.MysqlUpload(username=username, password=password, host=host, port=int(port))
894
894
  m.df_to_mysql(
895
895
  df=s.df,
896
896
  db_name=db_name,
@@ -929,7 +929,7 @@ def download_sku(service_name='company', database='mysql', db_name='属性设置
929
929
  df['获取与下载'] = df.apply(lambda x: '已下载' if x['sku编码'] in d.finish_download else x['获取与下载'], axis=1)
930
930
 
931
931
  # 回传数据库
932
- m = mysql.MysqlUpload(username=username, password=password, host=host, port=port)
932
+ m = mysql.MysqlUpload(username=username, password=password, host=host, port=int(port))
933
933
  m.df_to_mysql(
934
934
  df=df,
935
935
  db_name=db_name,
@@ -946,7 +946,7 @@ def download_spu(username, password, host, port, heads=0, col_name='白底图',
946
946
  从 属性设置 3 -> 商品sku属性 数据库中提取图片地址,下载图片
947
947
  col_name: 从那一列提取图片下载地址 ,, 白底图
948
948
  """
949
- download = s_query.QueryDatas(username=username, password=password, host=host, port=port)
949
+ download = s_query.QueryDatas(username=username, password=password, host=host, port=int(port))
950
950
  projection = {
951
951
  '日期': 1,
952
952
  '店铺名称': 1,
@@ -983,7 +983,7 @@ if __name__ == '__main__':
983
983
  username=username,
984
984
  password=password,
985
985
  host=host,
986
- port=port,
986
+ port=int(port),
987
987
  heads=100,
988
988
  col_name='白底图',
989
989
  save_path=os.path.join(upload_path, '商品id_商家编码_图片'),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.0.26
3
+ Version: 4.0.28
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,20 +1,20 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=snQW2ZBBl1LT0Olxngb1tSziKOqjbQaaREudtI-nZpM,18
2
+ mdbq/__version__.py,sha256=xMsXHu_A2cflhY5yKH_XTsHjVS0UvcjRyCC0GhRxiV0,18
3
3
  mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
4
- mdbq/aggregation/query_data.py,sha256=3lvLLy1sEn5ctf4FRacFvWF-J3isK5siOSItGXmCCrg,166877
4
+ mdbq/aggregation/query_data.py,sha256=UWwVcpOo9Ro6u9VtXcr8T8Hdh8Atem4yjO4wCsvcOTw,166882
5
5
  mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
6
6
  mdbq/log/mylogger.py,sha256=9w_o5mYB3FooIxobq_lSa6oCYTKIhPxDFox-jeLtUHI,21714
7
7
  mdbq/myconf/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
8
- mdbq/myconf/myconf.py,sha256=8b3qHPKII9eh0zPHu97UiykminLjT7ePL_Bj4511wno,30737
8
+ mdbq/myconf/myconf.py,sha256=GR250mf2KKImRUamPM2TEi9no_65tR4uKXn7eHNCAmg,31205
9
9
  mdbq/myconf/myconf_bak.py,sha256=39tLUBVlWQZzQfrwk7YoLEfipo11fpwWjaLBHcUt2qM,33341
10
10
  mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
11
- mdbq/mysql/deduplicator.py,sha256=kAnkI_vnN8CchgDQAFzeh0M0vLXE2oWq9SfDPNZZ3v0,73215
11
+ mdbq/mysql/deduplicator.py,sha256=0cyGZIHqWM1ELCPrepLtb51jludzvKMIeWFV7jPuIp4,73225
12
12
  mdbq/mysql/mysql.py,sha256=pDg771xBugCMSTWeskIFTi3pFLgaqgyG3smzf-86Wn8,56772
13
- mdbq/mysql/s_query.py,sha256=UqmR592HAFzQ5mwArHisd8HFUFiNa2HJuwiIbh8N8n8,44995
14
- mdbq/mysql/unique_.py,sha256=eA0RHGobXsMJtImMW1QvhrmguzJOYz5pX9vOA1G-gxQ,21117
15
- mdbq/mysql/uploader.py,sha256=f1wxouaQk3narxFQ4XiAtlA0LTX_WSz3qXTkn7m_tQQ,81141
13
+ mdbq/mysql/s_query.py,sha256=nByjtk5G18zgpomldb_5xDUAwBPXyXAcV1zvq5vkM_4,45005
14
+ mdbq/mysql/unique_.py,sha256=XHDBiY-zF_Hmt28Jf-xh3E-_sIWoJCxdi2dOAfnAyQ0,21127
15
+ mdbq/mysql/uploader.py,sha256=jW4aHm3kvt3EJ4tgnMl2fRPLY06VWaBv8JI5LSSMVzE,81151
16
16
  mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
17
- mdbq/other/download_sku_picture.py,sha256=L-inWl2bGNqNEpl5I2yyATzwYtYmObzM14cbiQedk8w,44758
17
+ mdbq/other/download_sku_picture.py,sha256=MfHBBffM8oWiso2jbrrIET7CQCkypSov0SYOoSN-PqA,44798
18
18
  mdbq/other/otk.py,sha256=iclBIFbQbhlqzUbcMMoePXBpcP1eZ06ZtjnhcA_EbmE,7241
19
19
  mdbq/other/pov_city.py,sha256=AEOmCOzOwyjHi9LLZWPKi6DUuSC-_M163664I52u9qw,21050
20
20
  mdbq/other/ua_sj.py,sha256=JuVYzc_5QZ9s_oQSrTHVKkQv4S_7-CWx4oIKOARn_9U,22178
@@ -25,7 +25,7 @@ mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
25
25
  mdbq/redis/getredis.py,sha256=vpBuNc22uj9Vr-_Dh25_wpwWM1e-072EAAIBdB_IpL0,23494
26
26
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
27
27
  mdbq/spider/aikucun.py,sha256=juOqpr_dHeE1RyjCu67VcpzoJAWMO7FKv0i8KiH8WUo,21552
28
- mdbq-4.0.26.dist-info/METADATA,sha256=Brv34YMfSk0zpnHdRkEgBj15SHfP6FoIKEeBa3Ohe3k,364
29
- mdbq-4.0.26.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
30
- mdbq-4.0.26.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
31
- mdbq-4.0.26.dist-info/RECORD,,
28
+ mdbq-4.0.28.dist-info/METADATA,sha256=ALYXGbIVSK6h34xxXxs_DSGkNrMTRZzch1nv3ge1IGg,364
29
+ mdbq-4.0.28.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
30
+ mdbq-4.0.28.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
31
+ mdbq-4.0.28.dist-info/RECORD,,
File without changes