您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎么使用Python连接MySQL
## 前言
在现代数据驱动的应用中,数据库是不可或缺的核心组件。MySQL作为最流行的开源关系型数据库之一,与Python的结合为开发者提供了强大的数据处理能力。本文将详细介绍如何使用Python连接MySQL数据库,涵盖从环境准备到高级操作的完整流程。
---
## 目录
1. [环境准备](#环境准备)
2. [安装必要的库](#安装必要的库)
3. [建立数据库连接](#建立数据库连接)
4. [执行SQL查询](#执行sql查询)
5. [事务管理](#事务管理)
6. [使用ORM框架](#使用orm框架)
7. [连接池技术](#连接池技术)
8. [安全注意事项](#安全注意事项)
9. [常见问题解决](#常见问题解决)
10. [总结](#总结)
---
## 环境准备
### 1.1 安装MySQL服务器
在开始之前,请确保已安装MySQL服务器:
- Windows: 下载MySQL Installer
- macOS: `brew install mysql`
- Linux: `sudo apt-get install mysql-server`
### 1.2 创建测试数据库
```sql
CREATE DATABASE python_mysql;
USE python_mysql;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50)
);
Python通过第三方库实现MySQL连接,主流选择有:
pip install mysql-connector-python
pip install pymysql
pip install sqlalchemy
import mysql.connector
config = {
'user': 'root',
'password': 'yourpassword',
'host': '127.0.0.1',
'database': 'python_mysql',
'raise_on_warnings': True
}
try:
conn = mysql.connector.connect(**config)
print("连接成功!")
conn.close()
except mysql.connector.Error as err:
print(f"连接失败: {err}")
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='yourpassword',
database='python_mysql'
)
cursor = conn.cursor(dictionary=True) # 返回字典形式结果
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
for row in results:
print(f"ID: {row['id']}, Name: {row['name']}")
insert_query = "INSERT INTO users (name, email) VALUES (%s, %s)"
values = ('Alice', 'alice@example.com')
cursor.execute(insert_query, values)
conn.commit() # 必须提交事务
print(f"插入行数: {cursor.rowcount}")
data = [
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com')
]
cursor.executemany(insert_query, data)
try:
cursor.execute("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1")
cursor.execute("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2")
conn.commit()
except:
conn.rollback()
with conn.cursor() as cursor:
cursor.execute("BEGIN")
# 执行多个操作
conn.commit()
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('mysql+pymysql://root:password@localhost/python_mysql')
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
email = Column(String(50))
# 查询示例
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
users = session.query(User).filter(User.name.like('A%')).all()
from dbutils.pooled_db import PooledDB
import pymysql
pool = PooledDB(
creator=pymysql,
maxconnections=10,
host='localhost',
user='root',
password='yourpassword',
database='python_mysql'
)
conn = pool.connection()
cursor = conn.cursor()
# 执行操作...
conn.close() # 实际返回到连接池
# 错误示范
cursor.execute(f"SELECT * FROM users WHERE name = '{user_input}'")
# 正确方式
cursor.execute("SELECT * FROM users WHERE name = %s", (user_input,))
config = {
'connect_timeout': 10,
'connection_timeout': 5
}
charset='utf8mb4',
collation='utf8mb4_unicode_ci'
本文详细介绍了Python连接MySQL的多种方法,包括: 1. 使用原生驱动进行基础操作 2. 通过ORM框架简化开发 3. 连接池优化性能 4. 安全最佳实践
建议根据项目需求选择合适的方案: - 小型项目:PyMySQL + 直接SQL - 中型项目:SQLAlchemy Core - 大型项目:SQLAlchemy ORM + 连接池
通过合理使用这些技术,可以构建高效可靠的数据库应用。
# 综合示例:CRUD操作
import mysql.connector
from mysql.connector import Error
def create_connection():
try:
conn = mysql.connector.connect(
host='localhost',
user='root',
password='yourpassword',
database='python_mysql'
)
return conn
except Error as e:
print(f"Error: {e}")
return None
def create_user(conn, name, email):
query = "INSERT INTO users(name, email) VALUES(%s, %s)"
cursor = conn.cursor()
try:
cursor.execute(query, (name, email))
conn.commit()
return cursor.lastrowid
except Error as e:
print(f"Error: {e}")
return None
# 其他CRUD函数...
注意:实际使用时请替换数据库凭据并处理异常 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。