test_db_connection.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 数据库连接测试脚本
  5. 连接到MySQL数据库并测试连接是否成功
  6. 支持Windows和Linux (CentOS) 环境
  7. """
  8. import pymysql
  9. import sys
  10. import os
  11. # 设置控制台输出编码(Windows需要,Linux默认UTF-8)
  12. if sys.platform == 'win32':
  13. try:
  14. os.system('chcp 65001 >nul 2>&1')
  15. except:
  16. pass
  17. else:
  18. # Linux环境下设置UTF-8编码
  19. import locale
  20. try:
  21. locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
  22. except:
  23. try:
  24. locale.setlocale(locale.LC_ALL, 'C.UTF-8')
  25. except:
  26. pass
  27. def test_db_connection():
  28. """测试数据库连接"""
  29. # 数据库连接配置
  30. db_config = {
  31. 'host': '127.0.0.1',
  32. 'port': 3306,
  33. 'user': 'prod',
  34. 'password': 'hmdmxjIvfIjIoflL',
  35. 'database': 'iot',
  36. 'charset': 'utf8mb4',
  37. 'connect_timeout': 10 # 连接超时时间(秒)
  38. }
  39. connection = None
  40. try:
  41. # 尝试连接数据库
  42. print("正在尝试连接到数据库...")
  43. print(f"主机: {db_config['host']}")
  44. print(f"端口: {db_config['port']}")
  45. print(f"用户名: {db_config['user']}")
  46. print("-" * 50)
  47. connection = pymysql.connect(**db_config)
  48. # 如果连接成功,执行一个简单查询来验证
  49. with connection.cursor() as cursor:
  50. cursor.execute("SELECT VERSION()")
  51. version = cursor.fetchone()
  52. print("[成功] 数据库连接成功!")
  53. print(f"[成功] MySQL版本: {version[0]}")
  54. # 获取当前数据库名称
  55. cursor.execute("SELECT DATABASE()")
  56. db_name = cursor.fetchone()
  57. if db_name[0]:
  58. print(f"[成功] 当前数据库: {db_name[0]}")
  59. else:
  60. print("[成功] 当前未选择数据库")
  61. # 获取连接ID
  62. cursor.execute("SELECT CONNECTION_ID()")
  63. conn_id = cursor.fetchone()
  64. print(f"[成功] 连接ID: {conn_id[0]}")
  65. return True
  66. except pymysql.Error as e:
  67. error_code, error_msg = e.args
  68. print("[失败] 数据库连接失败!")
  69. print(f"[失败] 错误代码: {error_code}")
  70. print(f"[失败] 错误信息: {error_msg}")
  71. return False
  72. except Exception as e:
  73. print("[失败] 发生未知错误!")
  74. print(f"[失败] 错误信息: {e}")
  75. return False
  76. finally:
  77. # 关闭数据库连接
  78. if connection:
  79. connection.close()
  80. print("-" * 50)
  81. print("[成功] 数据库连接已关闭")
  82. if __name__ == "__main__":
  83. print("=" * 50)
  84. print("数据库连接测试")
  85. print("=" * 50)
  86. success = test_db_connection()
  87. print("=" * 50)
  88. if success:
  89. print("测试结果: 成功")
  90. sys.exit(0)
  91. else:
  92. print("测试结果: 失败")
  93. sys.exit(1)