test_db_connection_detailed.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python3
  2. """
  3. 测试数据库连接
  4. """
  5. import os
  6. import sys
  7. # 导入配置
  8. sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src"))
  9. from app.core.config import config_handler
  10. print("=" * 60)
  11. print("测试数据库连接")
  12. print("=" * 60)
  13. # 测试环境变量
  14. database_url = config_handler.get("admin_app", "DATABASE_URL", "")
  15. print(f"\n1. DATABASE_URL: {database_url}")
  16. # 解析 URL
  17. from urllib.parse import urlparse
  18. parsed = urlparse(database_url)
  19. print(f"\n2. 解析结果:")
  20. print(f" 协议: {parsed.scheme}")
  21. print(f" 主机: {parsed.hostname}")
  22. print(f" 端口: {parsed.port}")
  23. print(f" 用户: {parsed.username}")
  24. print(f" 密码: {'*' * len(parsed.password) if parsed.password else 'None'}")
  25. print(f" 数据库: {parsed.path[1:] if parsed.path else 'None'}")
  26. # 测试 pymysql 连接
  27. print(f"\n3. 测试 pymysql 连接...")
  28. try:
  29. import pymysql
  30. conn = pymysql.connect(
  31. host=parsed.hostname,
  32. port=parsed.port,
  33. user=parsed.username,
  34. password=parsed.password,
  35. database=parsed.path[1:] if parsed.path else None,
  36. charset='utf8mb4'
  37. )
  38. print(" ✅ pymysql 连接成功!")
  39. # 测试查询
  40. cursor = conn.cursor()
  41. cursor.execute("SELECT VERSION()")
  42. version = cursor.fetchone()
  43. print(f" MySQL 版本: {version[0]}")
  44. # 查询用户表
  45. cursor.execute("SHOW TABLES LIKE 'users'")
  46. result = cursor.fetchone()
  47. if result:
  48. print(f" ✅ users 表存在")
  49. cursor.execute("SELECT COUNT(*) FROM users")
  50. count = cursor.fetchone()
  51. print(f" 用户数量: {count[0]}")
  52. else:
  53. print(f" ❌ users 表不存在")
  54. cursor.close()
  55. conn.close()
  56. except Exception as e:
  57. print(f" ❌ 连接失败: {e}")
  58. import traceback
  59. traceback.print_exc()
  60. print("\n" + "=" * 60)