from datetime import datetime import logging import time import os import sys import locale import mysql.connector from mysql.connector import Error # 强制系统使用UTF-8 sys.stdout.reconfigure(encoding='utf-8') sys.stderr.reconfigure(encoding='utf-8') locale.setlocale(locale.LC_ALL, 'C.UTF-8') if sys.platform != 'win32': os.environ['TZ'] = 'Asia/Shanghai' time.tzset() # 重新加载时区配置 # 确保日志目录存在 log_dir = 'logs' os.makedirs(log_dir, exist_ok=True) # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler(f'{log_dir}/app.log', encoding='utf-8'), logging.StreamHandler() ] ) class CSTFormatter(logging.Formatter): def formatTime(self, record, datefmt=None): ct = datetime.fromtimestamp(record.created).astimezone() if datefmt: s = ct.strftime(datefmt) else: t = ct.strftime("%Y-%m-%d %H:%M:%S") s = "%s,%03d" % (t, record.msecs) return s logger = logging.getLogger(__name__) def get_table_count(db_name): try: # 连接到MySQL数据库 connection = mysql.connector.connect( host='106.227.91.181', user='root', # 替换为您的MySQL用户名 password='cuixing@HuaerdaMySQL', # 替换为您的MySQL密码 database='huaerdames_cloud' # host= 'localhost', # user='root', # 替换为您的MySQL用户名 # password='root', # 替换为您的MySQL密码 # database='huaerdames_cloud' ) if connection.is_connected(): cursor = connection.cursor() # 获取所有表名 cursor.execute(f"SHOW TABLES FROM {db_name}") tables = cursor.fetchall() # 统计每个表的记录数 table_counts = {} for table in tables: table_name = table[0] cursor.execute(f"SELECT COUNT(*) FROM {table_name}") count = cursor.fetchone()[0] table_counts[table_name] = count return table_counts except Error as e: logger.error(f"数据库连接错误: {e}") return None finally: if connection.is_connected(): cursor.close() connection.close() if __name__ == '__main__': # 统计表数量 db_name = 'huaerdames_cloud' table_counts = get_table_count(db_name) if table_counts: logger.info(f"数据库 '{db_name}' 表统计:") for table, count in table_counts.items(): logger.info(f"表名: {table}, 记录数: {count}") logger.info(f"总表数: {len(table_counts)}") else: logger.warning("未能获取表统计信息")