SQLAlchemy 详细介绍及使用方法
SQLAlchemy 是 Python 中最强大、最成熟的对象关系映射(ORM)工具之一。它不仅提供了标准的 ORM 功能,还支持灵活的 SQL 构建和数据库操作,适用于从小型脚本到大型 Web 应用的多种场景。本文将详细介绍 SQLAlchemy 的核心功能、使用方法以及最佳实践,并通过代码示例帮助开发者快速上手。
一、SQLAlchemy 的核心概念
1.1 ORM 简介
ORM(Object-Relational Mapping)是一种将数据库表与 Python 类进行映射的技术。通过 ORM,开发者可以使用面向对象的编程方式操作数据库,而无需直接编写 SQL 语句。SQLAlchemy 的 ORM 实现了这一目标,并提供了丰富的功能来简化数据库交互。
1.2 SQLAlchemy 的组成
SQLAlchemy 的核心组件包括以下几部分:
- Engine:数据库连接的核心,负责管理数据库连接池和 SQL 语句的执行。
- Session:提供了一个中间层,用于管理对象与数据库之间的交互。
- Base:一个基类,用于映射数据库表到 Python 类。
- ORM 映射:将 Python 类映射到数据库表,并处理数据的转换和验证。
二、SQLAlchemy 的安装与配置
2.1 安装 SQLAlchemy
通过 pip 安装 SQLAlchemy:
pip install sqlalchemy
2.2 创建数据库引擎
SQLAlchemy 的 create_engine
函数用于创建数据库连接。支持多种数据库类型,如 SQLite、MySQL、PostgreSQL 等。
from sqlalchemy import create_engine
# 创建 SQLite 数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)
# 创建 MySQL 数据库引擎(需安装 mysqlclient 或 aiomysql)
# engine = create_engine('mysql+pymysql://user:password@host:port/dbname')
三、定义模型类(ORM 映射)
3.1 定义模型类
通过继承 Base
类,将 Python 类与数据库表进行映射。
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
age = Column(Integer)
3.2 创建数据库表
通过 Base.metadata.create_all()
自动创建表:
Base.metadata.create_all(engine)
四、数据库操作(CRUD)
4.1 创建会话
使用 sessionmaker
创建数据库会话:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
4.2 插入数据
添加单条或批量数据:
# 添加单条记录
new_user = User(name='Alice', age=25)
session.add(new_user)
session.commit()
# 批量添加记录
users = [
User(name='Bob'<