SQLAIchemy2.0 学习文档

张开发
2026/4/18 20:31:40 15 分钟阅读

分享文章

SQLAIchemy2.0 学习文档
SQLAlchemy 2.x 学习文档结构目录一、核心基础1. 引擎与连接create_engine()连接字符串与 Dialects连接池配置2. 类型系统通用类型与特定类型自定义类型二、ORM 映射1. 声明式映射declarative_base()2.x 风格Mapped 与 mapped_column2. 模式配置__tablename__关系relationship() 与 ForeignKey事件监听三、会话管理1. 会话工厂sessionmaker()Session 对象2. 事务控制commit(), rollback()异步会话四、数据定义1. 表结构操作创建表反射表结构五、数据操作1. 插入session.add()批量插入2. 更新对象更新批量更新3. 删除session.delete()批量删除六、查询系统1. 构造器select()insert(), update(), delete()2. 执行与结果execute()scalars()3. 高级查询过滤、排序、分页关联加载七、迁移1. Alembic初始化与配置版本控制一、核心基础1. 引擎与连接create_engine()本质数据库工厂与调度中心。它是应用程序与数据库之间的接口负责管理连接池、方言生成和事务处理。语法create_engine(url, **kwargs)关键参数url数据库连接字符串。echo布尔值若为 True 则打印所有生成的 SQL 语句用于调试。pool_size连接池中保持打开的连接数量。max_overflow连接池允许超出 pool_size 的最大连接数。返回值Engine 对象。# 格式方言驱动://用户:密码地址:端口/库名?参数urlmysqlpymysql://root:123456localhost:3306/mydb?charsetutf8mb4enginecreate_engine(url)连接字符串与 Dialects本质定义数据库类型、驱动、认证信息及目标地址的标准化 URL 格式。Dialect方言负责将 SQLAlchemy 的通用指令转换为特定数据库的 SQL。语法dialectdriver://username:passwordhost:port/database?charsetutf8mb4关键参数dialect数据库名称如 mysql, postgresql, sqlite。driverDBAPI 驱动名称如 pymysql, psycopg2若不填则使用默认驱动。username数据库登录用户名。password数据库登录密码若含 等特殊字符需进行 URL 编码。host数据库服务器地址IP 或域名。port数据库服务端口如 MySQL 默认 3306。database要连接的具体数据库名称。?charsetutf8mb4连接参数指定字符集以防止中文乱码。返回值无作为 create_engine 的参数。# 格式方言驱动://用户:密码地址:端口/库名?参数urlmysqlpymysql://root:123456localhost:3306/mydb?charsetutf8mb4enginecreate_engine(url)连接池配置本质管理数据库连接的复用机制。避免频繁创建和销毁连接的开销提高系统性能。SQLAlchemy 默认使用 QueuePool。语法通过 create_engine 的参数配置。关键参数pool_size池中保持的活跃连接数默认 5。max_overflow允许临时创建的额外连接数默认 10。pool_timeout获取连接的超时时间秒。pool_recycle连接回收时间秒防止数据库自动断开空闲连接。pool_pre_ping每次获取连接前先发送 ping 测试确保连接可用。返回值无。enginecreate_engine(mysqlpymysql://user:passhost/db?charsetutf8mb4,pool_size10,max_overflow20,pool_pre_pingTrue)2. 类型系统通用类型与特定类型自定义类型二、ORM 映射1. 声明式映射declarative_base()2.x 风格Mapped 与 mapped_column2. 模式配置tablename关系relationship() 与 ForeignKey事件监听三、会话管理1. 会话工厂sessionmaker()Session 对象2. 事务控制commit(), rollback()异步会话四、数据定义1. 表结构操作创建表反射表结构五、数据操作1. 插入session.add()批量插入2. 更新对象更新批量更新3. 删除session.delete()批量删除六、查询系统1. 构造器select()insert(), update(), delete()2. 执行与结果execute()scalars()3. 高级查询过滤、排序、分页关联加载七、迁移1. Alembic初始化与配置版本控制

更多文章