Files
zjpb.net/test_db.py

66 lines
1.9 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
"""
测试数据库连接
"""
import sys
import pymysql
from dotenv import load_dotenv
import os
# 设置UTF-8编码输出
if sys.platform.startswith('win'):
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
load_dotenv()
def test_connection():
"""测试MySQL连接"""
print("正在测试数据库连接...")
print(f"主机: {os.getenv('DB_HOST')}")
print(f"端口: {os.getenv('DB_PORT')}")
print(f"用户: {os.getenv('DB_USER')}")
print(f"数据库: {os.getenv('DB_NAME')}")
try:
connection = pymysql.connect(
host=os.getenv('DB_HOST'),
port=int(os.getenv('DB_PORT', 3306)),
user=os.getenv('DB_USER'),
password=os.getenv('DB_PASSWORD'),
database=os.getenv('DB_NAME'),
charset='utf8mb4'
)
print("\n✓ 数据库连接成功!")
# 测试查询
with connection.cursor() as cursor:
cursor.execute("SELECT VERSION()")
version = cursor.fetchone()
print(f"✓ MySQL版本: {version[0]}")
cursor.execute("SHOW TABLES")
tables = cursor.fetchall()
if tables:
print(f"✓ 现有表: {len(tables)}")
for table in tables:
print(f" - {table[0]}")
else:
print(" 当前数据库为空,可以运行 init_db.py 初始化")
connection.close()
return True
except Exception as e:
print(f"\n✗ 数据库连接失败: {str(e)}")
print("\n请检查:")
print("1. 服务器MySQL是否开放了3306端口")
print("2. .env文件中的数据库配置是否正确")
print("3. 数据库用户是否有远程访问权限")
print("4. 服务器防火墙/安全组是否允许3306端口")
return False
if __name__ == '__main__':
test_connection()