mdbq 4.0.24__py3-none-any.whl → 4.0.26__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 +1 -1
- mdbq/aggregation/query_data.py +14 -10
- mdbq/mysql/s_query.py +49 -7
- {mdbq-4.0.24.dist-info → mdbq-4.0.26.dist-info}/METADATA +1 -1
- {mdbq-4.0.24.dist-info → mdbq-4.0.26.dist-info}/RECORD +7 -7
- {mdbq-4.0.24.dist-info → mdbq-4.0.26.dist-info}/WHEEL +0 -0
- {mdbq-4.0.24.dist-info → mdbq-4.0.26.dist-info}/top_level.txt +0 -0
mdbq/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION = '4.0.
|
1
|
+
VERSION = '4.0.26'
|
mdbq/aggregation/query_data.py
CHANGED
@@ -3684,16 +3684,20 @@ def main(months=3):
|
|
3684
3684
|
# 1. 更新日期表 更新货品年份基准表, 属性设置 3 - 货品年份基准
|
3685
3685
|
date_table()
|
3686
3686
|
# 2. 数据聚合
|
3687
|
-
|
3688
|
-
username
|
3689
|
-
password
|
3690
|
-
host
|
3691
|
-
port
|
3692
|
-
pool_size
|
3693
|
-
|
3694
|
-
|
3695
|
-
|
3696
|
-
|
3687
|
+
db_config = {
|
3688
|
+
'username': username,
|
3689
|
+
'password': password,
|
3690
|
+
'host': host,
|
3691
|
+
'port': int(port),
|
3692
|
+
'pool_size': 20,
|
3693
|
+
'mincached': 5,
|
3694
|
+
'maxcached': 10,
|
3695
|
+
}
|
3696
|
+
with s_query.QueryDatas(**db_config) as download_manager:
|
3697
|
+
query1(download_manager=download_manager, months=months)
|
3698
|
+
query2(download_manager=download_manager, months=months)
|
3699
|
+
query3(download_manager=download_manager, months=months)
|
3700
|
+
|
3697
3701
|
logger.info('数据聚合完成')
|
3698
3702
|
|
3699
3703
|
|
mdbq/mysql/s_query.py
CHANGED
@@ -264,7 +264,26 @@ class QueryDatas:
|
|
264
264
|
conn = self.pool.connection()
|
265
265
|
if db_name:
|
266
266
|
with conn.cursor() as cursor:
|
267
|
-
|
267
|
+
# 先检查当前数据库
|
268
|
+
cursor.execute("SELECT DATABASE()")
|
269
|
+
current_db = cursor.fetchone()['DATABASE()']
|
270
|
+
|
271
|
+
# 如果当前数据库不是目标数据库,则切换
|
272
|
+
if current_db != db_name:
|
273
|
+
cursor.execute(f"USE `{db_name}`")
|
274
|
+
# 验证切换是否成功
|
275
|
+
cursor.execute("SELECT DATABASE()")
|
276
|
+
new_db = cursor.fetchone()['DATABASE()']
|
277
|
+
if new_db != db_name:
|
278
|
+
logger.error('数据库切换失败', {
|
279
|
+
'期望数据库': db_name,
|
280
|
+
'当前数据库': new_db
|
281
|
+
})
|
282
|
+
raise ConnectionError(f'无法切换到数据库: {db_name}')
|
283
|
+
logger.debug('数据库切换成功', {
|
284
|
+
'从': current_db,
|
285
|
+
'到': db_name
|
286
|
+
})
|
268
287
|
return conn
|
269
288
|
except pymysql.OperationalError as e:
|
270
289
|
error_code = e.args[0] if e.args else None
|
@@ -353,6 +372,7 @@ class QueryDatas:
|
|
353
372
|
"""
|
354
373
|
try:
|
355
374
|
if info_type == 'exists':
|
375
|
+
# 检查数据库是否存在
|
356
376
|
result = self._execute_query("SHOW DATABASES LIKE %s", (db_name,))
|
357
377
|
if not result:
|
358
378
|
all_dbs = self._execute_query("SHOW DATABASES")
|
@@ -363,17 +383,39 @@ class QueryDatas:
|
|
363
383
|
'可能的原因': '数据库名称错误或没有访问权限'
|
364
384
|
})
|
365
385
|
return False
|
366
|
-
|
367
|
-
|
386
|
+
|
387
|
+
# 检查表是否存在(使用information_schema更可靠)
|
388
|
+
sql = """
|
389
|
+
SELECT TABLE_NAME
|
390
|
+
FROM information_schema.TABLES
|
391
|
+
WHERE TABLE_SCHEMA = %s
|
392
|
+
AND TABLE_NAME = %s
|
393
|
+
"""
|
394
|
+
result = self._execute_query(sql, (db_name, table_name))
|
368
395
|
if not result:
|
369
|
-
|
370
|
-
|
371
|
-
|
396
|
+
# 获取所有表名(不区分大小写)
|
397
|
+
sql = """
|
398
|
+
SELECT TABLE_NAME
|
399
|
+
FROM information_schema.TABLES
|
400
|
+
WHERE TABLE_SCHEMA = %s
|
401
|
+
"""
|
402
|
+
all_tables = self._execute_query(sql, (db_name,))
|
403
|
+
available_tables = [table['TABLE_NAME'] for table in all_tables] if all_tables else []
|
404
|
+
|
405
|
+
# 检查是否有大小写匹配的表
|
406
|
+
case_insensitive_matches = [t for t in available_tables if t.lower() == table_name.lower()]
|
407
|
+
|
408
|
+
error_info = {
|
372
409
|
'库': db_name,
|
373
410
|
'表': table_name,
|
374
411
|
'可用的表': available_tables,
|
375
412
|
'可能的原因': '表名称错误或没有访问权限'
|
376
|
-
}
|
413
|
+
}
|
414
|
+
|
415
|
+
if case_insensitive_matches:
|
416
|
+
error_info['可能的原因'] = f'表名大小写不匹配,请使用正确的表名: {case_insensitive_matches}'
|
417
|
+
|
418
|
+
logger.info('表不存在', error_info)
|
377
419
|
return False
|
378
420
|
return True
|
379
421
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
2
|
-
mdbq/__version__.py,sha256=
|
2
|
+
mdbq/__version__.py,sha256=snQW2ZBBl1LT0Olxngb1tSziKOqjbQaaREudtI-nZpM,18
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
|
-
mdbq/aggregation/query_data.py,sha256=
|
4
|
+
mdbq/aggregation/query_data.py,sha256=3lvLLy1sEn5ctf4FRacFvWF-J3isK5siOSItGXmCCrg,166877
|
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
|
@@ -10,7 +10,7 @@ mdbq/myconf/myconf_bak.py,sha256=39tLUBVlWQZzQfrwk7YoLEfipo11fpwWjaLBHcUt2qM,333
|
|
10
10
|
mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
11
11
|
mdbq/mysql/deduplicator.py,sha256=kAnkI_vnN8CchgDQAFzeh0M0vLXE2oWq9SfDPNZZ3v0,73215
|
12
12
|
mdbq/mysql/mysql.py,sha256=pDg771xBugCMSTWeskIFTi3pFLgaqgyG3smzf-86Wn8,56772
|
13
|
-
mdbq/mysql/s_query.py,sha256=
|
13
|
+
mdbq/mysql/s_query.py,sha256=UqmR592HAFzQ5mwArHisd8HFUFiNa2HJuwiIbh8N8n8,44995
|
14
14
|
mdbq/mysql/unique_.py,sha256=eA0RHGobXsMJtImMW1QvhrmguzJOYz5pX9vOA1G-gxQ,21117
|
15
15
|
mdbq/mysql/uploader.py,sha256=f1wxouaQk3narxFQ4XiAtlA0LTX_WSz3qXTkn7m_tQQ,81141
|
16
16
|
mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
@@ -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.
|
29
|
-
mdbq-4.0.
|
30
|
-
mdbq-4.0.
|
31
|
-
mdbq-4.0.
|
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,,
|
File without changes
|
File without changes
|