Python连接MySQL数据库的核心方法是通过安装适配库(如
pymysql
mysql-connector-python
-
安装与配置数据库驱动
使用plaintext复制或pip install pymysql
plaintext复制安装适配库。若需兼容MySQL 8.0及以上版本,需额外安装mysql-connector-python
plaintext复制库以支持加密协议。示例代码初始化连接:cryptography
python复制import pymysql connection = pymysql.connect( host='localhost', user='root', password='your_password', database='test_db', charset='utf8mb4' )
参数中
plaintext复制需设为charset
plaintext复制以支持中文及特殊字符,避免编码错误。utf8mb4
-
游标操作与SQL执行
通过plaintext复制创建游标对象,推荐使用connection.cursor()
plaintext复制语句自动管理资源:with
python复制with connection.cursor() as cursor: cursor.execute("SELECT * FROM users WHERE id=%s", (user_id,)) result = cursor.fetchall()
使用参数化查询(如
plaintext复制占位符)而非字符串拼接,可预防SQL注入攻击。事务操作需显式调用%s
plaintext复制提交,或connection.commit()
plaintext复制回滚。rollback()
-
异常处理与连接关闭
通过plaintext复制块捕获try-except
plaintext复制异常,确保连接正确释放:pymysql.Error
python复制try: # 执行数据库操作 except pymysql.Error as e: print(f"数据库错误: {e}") finally: connection.close() # 显式关闭连接
连接未关闭可能导致内存泄漏或数据库连接数超限,影响系统稳定性。
-
连接池优化高并发场景
频繁创建连接会消耗资源,可采用plaintext复制实现连接池:DBUtils.PooledDB
python复制from dbutils.pooled_db import PooledDB pool = PooledDB( creator=pymysql, maxconnections=10, host='localhost', user='root', password='your_password', database='test_db' ) connection = pool.connection() # 从池中获取连接
连接池自动管理连接的创建和回收,适合Web应用等高并发场景,降低延迟。
实际开发中,建议将数据库配置信息独立为配置文件或环境变量,避免硬编码敏感信息。对于长期运行的程序,需定期检查连接状态(如
connection.ping(reconnect=True)
SQLAlchemy