SQLAlchemy 是 Python 中一个功能强大的 SQL 工具包和对象关系映射(ORM)工具。它提供了数据库交互的高级接口,使得开发者可以使用 Python 代码来操作数据库,而无需直接编写 SQL 语句。SQLAlchemy 的主要特点包括:
- 对象关系映射(ORM):将数据库表映射为 Python 类,使得操作数据库就像操作 Python 对象一样简单。
- SQL 表达式语言:提供了一种 Pythonic 的方式来构建 SQL 查询。
- 数据库连接池:管理数据库连接,提高性能和资源利用率。
- 支持多种数据库:兼容多种数据库系统,如 MySQL、PostgreSQL、SQLite 等。
安装 SQLAlchemy
在开始之前,你需要安装 SQLAlchemy。可以通过 pip 安装:
bash复制
pip install sqlalchemy
如果你需要使用特定的数据库,还需要安装对应的数据库驱动。例如,对于 MySQL,可以使用 pymysql:
bash复制
pip install pymysql
基础使用教程
1. 创建 Engine
Engine 是 SQLAlchemy 中用于管理数据库连接的对象。它负责处理数据库的连接池,并提供一个接口来执行 SQL 语句,一个Engine 实例连接一个数据库。
Python复制
from sqlalchemy import create_engine
# 定义数据库连接信息
DATABASE_URL = "mysql+pymysql://user:password@host:port/db_name"
# 创建 Engine
engine = create_engine(DATABASE_URL)
2. 定义模型类
模型类是 SQLAlchemy 中用于映射数据库表的类。它们继承自 BaseModel,并使用 declarative_base() 创建。
Python复制
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import declarative_base
# 创建 BaseModel
BaseModel = declarative_base()
# 定义模型类
class JobModel(BaseModel):
__tablename__ = 'job'
id = Column(Integer, primary_key=True)
name = Column(String(255), nullable=False)
description = Column(String(255), nullable=True)
3. 创建表
使用
BaseModel.metadata.create_all(engine) 创建表。
Python复制
# 创建表
BaseModel.metadata.create_all(engine)
4. 创建 Session
Session 是 SQLAlchemy 中用于管理数据库事务的对象。它提供了一个接口来执行数据库操作,如插入、查询、更新和删除数据,一个Session 实例绑定一个Engine 实例。
Python复制
from sqlalchemy.orm import sessionmaker
# 创建 Session
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionLocal()
5. 插入数据
通过 Session 插入数据。
Python复制
# 插入数据
new_job = JobModel(name="Test Job", description="This is a test job")
session.add(new_job)
session.commit()
6. 查询数据
通过 Session 查询数据。
Python复制
# 查询数据
job = session.query(JobModel).filter_by(name="Test Job").first()
print(job.id, job.name, job.description)
7. 更新数据
通过 Session 更新数据。
Python复制
# 更新数据
job.description = "Updated description"
session.commit()
8. 删除数据
通过 Session 删除数据。
Python复制
# 删除数据
session.delete(job)
session.commit()
9. 关闭 Session
完成操作后,关闭 Session。
Python复制
# 关闭 Session
session.close()
完整示例代码
以下是一个完整的示例代码,展示了如何使用 SQLAlchemy 创建表、插入数据、查询数据、更新数据和删除数据。
Python复制
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker, declarative_base
# 定义数据库连接信息
DATABASE_URL = "mysql+pymysql://user:password@host:port/db_name"
# 创建 Engine
engine = create_engine(DATABASE_URL)
# 创建 BaseModel
BaseModel = declarative_base()
# 定义模型类
class JobModel(BaseModel):
__tablename__ = 'job'
id = Column(Integer, primary_key=True)
name = Column(String(255), nullable=False)
description = Column(String(255), nullable=True)
# 创建表
BaseModel.metadata.create_all(engine)
# 创建 Session
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionLocal()
# 插入数据
new_job = JobModel(name="Test Job", description="This is a test job")
session.add(new_job)
session.commit()
# 查询数据
job = session.query(JobModel).filter_by(name="Test Job").first()
print(job.id, job.name, job.description)
# 更新数据
job.description = "Updated description"
session.commit()
# 删除数据
session.delete(job)
session.commit()
# 关闭 Session
session.close()
总结
通过以上步骤,你可以快速上手 SQLAlchemy,实现数据库的连接、表的创建、数据的增删改查等操作。SQLAlchemy 提供了强大的 ORM 功能,使得数据库操作更加简单和高效。希望这个教程对你有所帮助!