57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import pymysql
|
|
from app.core.config import settings
|
|
|
|
def test_mysql_connection():
|
|
try:
|
|
print(f"正在连接数据库: {settings.DATABASE_URL}")
|
|
|
|
# 解析连接字符串
|
|
import re
|
|
pattern = r'mysql\+pymysql://([^:]+):([^@]+)@([^:]+):(\d+)/(.+)'
|
|
match = re.match(pattern, settings.DATABASE_URL)
|
|
|
|
if match:
|
|
username, password, host, port, database = match.groups()
|
|
print(f"主机: {host}")
|
|
print(f"端口: {port}")
|
|
print(f"用户: {username}")
|
|
print(f"数据库: {database}")
|
|
|
|
# 尝试连接
|
|
connection = pymysql.connect(
|
|
host=host,
|
|
port=int(port),
|
|
user=username,
|
|
password=password,
|
|
database=database,
|
|
charset='utf8mb4'
|
|
)
|
|
|
|
print("MySQL数据库连接成功!")
|
|
|
|
# 测试查询
|
|
with connection.cursor() as cursor:
|
|
cursor.execute("SELECT VERSION()")
|
|
version = cursor.fetchone()
|
|
print(f"MySQL版本: {version[0]}")
|
|
|
|
cursor.execute("SHOW TABLES")
|
|
tables = cursor.fetchall()
|
|
print(f"现有表数量: {len(tables)}")
|
|
for table in tables:
|
|
print(f"- {table[0]}")
|
|
|
|
connection.close()
|
|
return True
|
|
|
|
else:
|
|
print("连接字符串格式错误")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"数据库连接失败: {str(e)}")
|
|
print(f"错误类型: {type(e).__name__}")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
test_mysql_connection() |