更改¶
版本 3.1.2¶
修复在没有默认引擎的情况下调用
repr()在SQLAlchemy实例上的问题。 #1295
版本 3.1.1¶
发布于 2023-09-11
弃用
__version__属性。改为使用特性检测或importlib.metadata.version("flask-sqlalchemy")。 #5230
版本 3.1.0¶
发布于 2023-09-11
版本 3.0.5¶
发布于 2023-06-21
版本 3.0.4¶
发布于 2023-06-19
版本 3.0.3¶
发布于 2023-01-31
版本 3.0.2¶
发布于 2022-10-14
更新与 SQLAlchemy 2 的兼容性。 #1122
版本 3.0.1¶
发布于 2022-10-11
版本 3.0.0¶
发布于 2022-10-04
不再支持 Python 2、3.4、3.5 和 3.6。
将 Flask 的最低版本提高到 2.2。
将 SQLAlchemy 的最低版本提高到 1.4.18。
移除之前弃用的代码。
会话作用域为当前应用程序上下文,而不是线程。这要求激活应用程序上下文。这可确保在每个请求后清理会话。
始终需要一个活动的 Flask 应用程序上下文才能访问
session和engine,无论是否将应用程序传递给构造函数。 #508, #944不同的绑定键使用不同的 SQLAlchemy
MetaData注册表,从而允许不同数据库中的表具有相同的名称。绑定键存储在结果元数据上并从中查找,而不是在模型或表上。SQLALCHEMY_DATABASE_URI不会默认为sqlite:///:memory:。如果既没有它,也没有SQLALCHEMY_BINDS定义任何引擎,则会引发错误。 #731使用相对路径配置 SQLite 时,相对路径相对于
app.instance_path,而不是app.root_path。如果需要,将创建实例文件夹。 #462向扩展对象添加了
get_or_404、first_or_404、one_or_404和paginate方法。这些方法使用 SQLAlchemy 首选的session.execute(select())模式,而不是旧查询界面。 #1088创建引擎和会话的设置方法已重命名,并以一个前导下划线开头。它们被认为是可能随时更改的内部接口。
除
app外,SQLAlchemy的所有参数都是关键字限定的。将
bind参数重命名为bind_key,并从各种SQLAlchemy方法中删除了app参数。扩展对象使用
__getattr__来别名 SQLAlchemy 包中的名称,而不是将其复制为属性。扩展对象直接存储为
app.extensions["sqlalchemy"]。 #698可以通过在
session_options参数中传递class_键来定制会话类。 #327SignallingSession已重命名为Session。Session.get_bind更接近基本实现。模型类和
db实例在flask shell中无需导入即可使用。 #1089CamelCase到snake_case表名转换器正确处理了更多模式。如果已在数据库中创建的模型发生更改,则可以使用 Alembic 重命名表,或设置__tablename__以保留旧名称。 #406Modelrepr区分瞬态和待处理的实例。 #967自定义模型类可以使用类参数实现
__init_subclass__。 #1002db.Table是一个子类,而不是一个函数。engine_options参数在每个引擎配置之前作为默认值应用。SQLALCHEMY_BINDS值可以是引擎 URL,也可以是引擎选项(包括 URL)的字典,用于每个绑定。SQLALCHEMY_DATABASE_URI和SQLALCHEMY_ENGINE_OPTIONS对应于None键,并优先考虑。 #783在调用
init_app时创建引擎,而不是在首次访问引擎时创建。 #698db.engines公开当前应用程序的绑定键到引擎的映射。get_engine、get_tables_for_bind和get_binds已弃用。支持类似于
sqlite:///file:name.db?uri=true的 SQLite 驱动程序级 URI。 #998、#1045如果
pool_size为 0,则 SQLite 引擎不会使用NullPool。默认情况下,MySQL 引擎使用“utf8mb4”字符集。 #875
MySQL 引擎不会将
pool_size设置为 10。如果不使用队列池,则 MySQL 引擎不会为
pool_recycle设置默认值。 #803Query已从BaseQuery重命名。已添加
Query.one_or_404。查询类应用于
backref中的relationship。 #417手动创建
Pagination对象不再是公开的 API。它们应该使用db.paginate或query.paginate创建。 #1088Pagination.iter_pages和Query.paginate参数仅限关键字。Pagination是可迭代的,可迭代其项目。 #70分页计数查询更高效。
Pagination.iter_pages更高效。 #622Pagination.iter_pagesright_current参数是包含的。分页
per_page不能为 0。 #1091分页
max_per_page默认为 100。 #1091添加了
Pagination.first和last属性,它们提供了页面上第一个和最后一个项目的数量。 #567SQLALCHEMY_RECORD_QUERIES默认情况下处于禁用状态,并且不会自动启用app.debug或app.testing。 #1092get_debug_queries已重命名为get_recorded_queries以更好地匹配配置和功能。记录的查询信息是数据类,而不是元组。
context属性已重命名为location。查找位置使用更具包容性的检查。SQLALCHEMY_TRACK_MODIFICATIONS默认情况下处于禁用状态。 #727SQLALCHEMY_COMMIT_ON_TEARDOWN已弃用。它会导致各种设计问题,难以调试。直接调用db.session.commit()。 #216
版本 2.5.1¶
发布于 2021-03-18
修复与 Python 2.7 的兼容性。
版本 2.5.0¶
发布于 2021-03-18
更新以支持 SQLAlchemy 1.4。
SQLAlchemy
URL对象是不可变的。一些内部方法已更改为返回一个新的 URL,而不是None。 #885
版本 2.4.4¶
发布于 2020-07-14
将元混合类的基类更改为
type。这修复了 CPython 3.8.4 中回归导致的问题。 #852
版本 2.4.3¶
发布于 2020-05-26
弃用
SQLALCHEMY_COMMIT_ON_TEARDOWN,因为它会导致各种设计问题,难以调试。直接调用db.session.commit()。 #216
版本 2.4.2¶
发布于 2020-05-25
修复记录被重复时分页错误。 #812
版本 2.4.1¶
发布于 2019-09-24
修复在多绑定中使用多态模型时出现的
AttributeError。 #651
版本 2.4.0¶
发布于 2019-04-24
不再支持 Python 2.6 和 3.3。 #687
解决 SQLAlchemy 1.3 弃用问题。 #684
使引擎配置更灵活。添加了
engine_options参数和SQLALCHEMY_ENGINE_OPTIONS配置。弃用了单独的引擎选项配置键SQLALCHEMY_NATIVE_UNICODE、SQLALCHEMY_POOL_SIZE、SQLALCHEMY_POOL_TIMEOUT、SQLALCHEMY_POOL_RECYCLE和SQLALCHEMY_MAX_OVERFLOW。 #684get_or_404()和first_or_404()现在接受description参数以控制 404 消息。 #636在 Windows 上的 Python 3 中使用
time.perf_counter。 #638添加了 Flask 教程项目 Flaskr 的示例,该示例已针对 Flask-SQLAlchemy 进行了调整。 #720
版本 2.3.2¶
2017 年 10 月 11 日发布
不要掩盖单表继承模型的父表。 #561
版本 2.3.1¶
2017 年 10 月 5 日发布
版本 2.3.0¶
发布于 2017-09-28
修复了
__tablename__生成中的多个错误。将为定义主键的模型生成名称,但不会为单表继承子类生成名称。名称不会覆盖declared_attr。检测到PrimaryKeyConstraint。 #541将现有的
declarative_base()作为model_class传递给SQLAlchemy.__init__将使用它作为基类,而不是创建一个基类。这允许自定义用于构建基类的元类。 #546扩展用于绑定和表名生成的未记录
DeclarativeMeta内部已重构为以混合方式工作。添加了有关如何创建不执行表名生成的自定义元类的文档。 #546模型和元类代码已移至新的
models模块。_BoundDeclarativeMeta重命名为DefaultMeta;旧名称将在 3.0 中删除。 #546模型具有显示模型名称和主键的默认
repr。 #530修复了一个错误,其中使用
init_app会导致连接器始终使用current_app,而不是为其创建的应用程序。当多个应用程序在扩展中注册时,这会导致问题。 #547
版本 2.2¶
发布于 2017-02-27,代号 Dubnium
由于使用了
sqlalchemy.inspect,最低 SQLAlchemy 版本为 0.8。添加了对自定义
query_class和model_class作为SQLAlchemy构造函数参数的支持。 #328允许在
db.session上监听 SQLAlchemy 事件。 #364允许在抽象模型上使用
__bind_key__。 #373允许
SQLALCHEMY_ECHO为字符串。 #409当
SQLALCHEMY_DATABASE_URI未设置时发出警告。 #443不允许分页生成无效的页码。 #460
放弃对 Flask < 0.10 的支持。这意味着数据库会话始终与应用程序上下文及其终止事件相关联。 #461
表名生成逻辑不再访问类属性,除非它们是
declared_attr。 #467
版本 2.1¶
于 2015-10-23 发布,代号为 Caesium
在更多情况下自动生成表名,包括子类化混合和抽象模型。
允许使用自定义 MetaData 对象。
添加对会话绑定参数的支持。
版本 2.0¶
于 2014-08-29 发布,代号为 Bohrium
更改了内置信号的订阅方式,以跳过非 Flask-SQLAlchemy 会话。这也将修复有关模型更改不存在的属性错误。
添加了一种控制如何跟踪模型修改信号的方法。
将
SignallingSession设置为公共接口,并添加了一个用于自定义会话创建的钩子。如果将
bind参数提供给信令会话,它将不再导致参数被提供两次的错误。添加了工作表反射支持。
默认启用自动刷新。
认为
SQLALCHEMY_COMMIT_ON_TEARDOWN有害,并从文档中删除。
版本 1.0¶
2013 年 7 月 20 日发布,代号 Aurum
添加了 Python 3.3 支持。
放弃了 Python 2.5 兼容性。
各种错误修复。
将版本格式更改为现在对每次更新进行主要版本发布。
版本 0.16¶
新的分发格式 (flask_sqlalchemy)。
添加了对 Flask 0.9 规范的支持。
版本 0.15¶
添加了对多个数据库的会话支持。
版本 0.14¶
使相对 sqlite 路径相对于应用程序根目录。
版本 0.13¶
修复了 Flask-SQLAlchemy 未选择正确绑定项的问题。
版本 0.12¶
添加了对多个数据库的支持。
将
BaseQuery作为db.Query暴露。将
db.relation、db.relationship和db.dynamic_loader的默认query_class设置为BaseQuery。提高了与 Flask 0.7 的兼容性。
版本 0.11¶
修复了 0.10 中引入的替代表构造函数中的错误。
版本 0.10¶
添加了对信号的支持。
除非被覆盖,否则表名现在会自动从类名设置。
Model.query现在始终适用于直接传递给SQLAlchemy构造函数的应用程序。此外,该属性现在会引发RuntimeError,而不是None。向构造函数中添加了会话选项。
修复了损坏的
__repr__。db.Table现在是一个创建表对象的工厂函数。这使得可以省略元数据。
版本 0.9¶
应用更改以通过 Flask 扩展批准流程。
版本 0.8¶
添加了一些用于创建连接的配置键。
自动激活 MySQL 连接的连接回收。
添加了对 Flask 测试模式的支持。
版本 0.7¶
首次公开发布