pymysql SQLAlchemy
时间: 2025-04-26 12:10:52 浏览: 22
### 结合使用 PyMySQL 和 SQLAlchemy 进行数据库操作
#### 使用 PyMySQL 创建连接并执行查询
PyMySQL 是一个用于 Python 的 MySQL 客户端库,可以直接用来建立到 MySQL 数据库的连接,并执行 SQL 查询。
```python
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test_db'
)
try:
with connection.cursor() as cursor:
sql = 'SELECT version();'
cursor.execute(sql)
result = cursor.fetchone()
print(f'Database version: {result}')
finally:
connection.close()
```
这段代码展示了如何利用 PyMySQL 建立与 MySQL 数据库之间的连接以及怎样发送一条简单的 SELECT 语句来获取当前使用的数据库版本[^1]。
#### 利用 SQLAlchemy 构建 ORM 映射关系
SQLAlchemy 提供了一个更高层次的对象关系映射(ORM),允许开发者定义类作为表结构表示形式。下面的例子说明了如何设置 SQLAlchemy 并将其与 PyMySQL 配合工作:
```python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
engine = create_engine('mysql+pymysql://root:password@localhost/test_db')
Session = sessionmaker(bind=engine)
session = Session()
new_user = User(name="Alice")
session.add(new_user)
session.commit()
for instance in session.query(User).order_by(User.id):
print(instance.name)
```
此部分代码首先设置了 SQLAlchemy 中的基础组件——`create_engine()` 函数指定了要使用的驱动程序 (`pymysql`) 及其对应的 URL;接着声明了一个名为 `User` 的模型类对应于数据库中的 users 表;最后通过创建会话实例来进行增删改查等操作[^2].
#### 综合应用两者优势
当希望充分利用两者的特性时,可以先借助 PyMySQL 执行一些低级别的命令或处理特殊情况下的事务管理,而日常的数据存取则交给更易于维护和扩展的 SQLAlchemy ORM 层面去完成。例如,在某些情况下可能需要直接调用存储过程或其他复杂逻辑,则可以通过 PyMySQL 来实现这些功能的同时保持大部分业务逻辑基于 SQLAlchemy 编写[^3].
阅读全文
相关推荐


















