SqlAlchemy 2.0 中文文档(六十二)(3)https://developer.aliyun.com/article/1560760
1.1.3
发布日期:2016 年 10 月 27 日
orm
- [orm] [bug]
修复了由#2677引起的回归,即在该会话中已经刷新为删除状态的对象调用Session.delete()
会导致对象未能在标识映射中设置(或拒绝该对象),从而导致刷新错误,因为该对象处于工作单元无法容纳的状态。在这种情况下,恢复了 1.1 版本之前的行为,即将对象放回标识映射中,以便再次尝试 DELETE 语句,这会发出警告,指出未匹配预期行数(除非在会话之外还原了该行)。
引用:#3839 - [orm] [bug]
修复了一些Query
方法(如Query.update()
等)在针对一系列映射列而不是整个映射实体的Query
时会失败的回归。
参考:#3836
sql
- [sql] [bug]
修复了在Enum
中使用新值翻译和验证功能时的错误,其中在字符串连接中使用枚举对象会将整个表达式的类型保持为Enum
类型,导致查找丢失。现在,针对Enum
类型的列进行字符串连接将使用String
作为表达式本身的数据类型。
参考:#3833 - [sql] [bug]
修复了在用户定义的TypeDecorator
同时也是SchemaType
实例的情况下,由于#2919的副作用而导致列附加事件被跳过的回归。
参考:#3832
postgresql
- [postgresql] [bug]
PostgreSQL 表反射将确保在反射主键列时,如果列不是Integer
数据类型,则Column.autoincrement
标志设置为 False,即使默认值与生成整数的序列相关。如果列被创建为 SERIAL 并且数据类型已更改,则可能会发生这种情况。在 1.1 系列中,只有数据类型为整数亲和性时,autoincrement 标志才能为 True。
参考:#3835
orm
- [orm] [bug]
修复了由#2677引起的回归,其中在会话中已经刷新为删除状态的对象上调用Session.delete()
将无法设置对象到标识映射(或拒绝对象),导致刷新错误,因为对象处于工作单元无法容纳的状态。 在这种情况下,已恢复了 1.1 之前的行为,即将对象放回到标识映射中,以便再次尝试 DELETE 语句,这会发出警告,指出未匹配预期行数(除非行在会话外被恢复)。
参考:#3839 - [orm] [bug]
修复了某些Query
方法(例如Query.update()
等)失败的回归,如果Query
针对一系列映射列而不是整个映射实体。
参考:#3836
sql
- [sql] [bug]
修复了在Enum
的新值翻译和验证功能中涉及的错误,其中在字符串串联中使用枚举对象会将Enum
类型保留为表达式的整体类型,导致查找丢失。 现在,对Enum
类型的列进行字符串串联将使用String
作为表达式本身的数据类型。
参考:#3833 - [sql] [bug]
修复了由#2919的副作用导致的回归,即在用户定义的TypeDecorator
也是SchemaType
实例的情况下(而不是实现为此的情况)会导致跳过类型本身的列附加事件。
参考:#3832
postgresql
- [postgresql] [bug]
PostgreSQL 表反射将确保在反射主键列时,如果默认值与生成整数的序列相关联,将Column.autoincrement
标志设置为 False,即使数据类型已更改为不是Integer
数据类型。如果列被创建为 SERIAL 并且数据类型已更改,则 autoincrement 标志只能在 1.1 系列中的整数亲和性数据类型为 True。
参考:#3835
1.1.2
发布日期:2016 年 10 月 17 日
orm
- [orm] [bug]
修复了一个 bug,涉及到在一个多对一懒加载器的另一侧禁用连接集合急加载器的规则,首次添加在#1495中,如果父对象有一些其他与 lazyloader 绑定的查询选项,则规则会失败。
参考:#3824 - [orm] [bug]
修复了自引用实体中延迟列加载问题,类似于#3431、#3811中的问题,其中由于自引用急加载而导致实体在行中出现多次;当延迟加载器仅适用于其中一条路径时,“存在”列加载器现在将覆盖该实体的延迟非加载,而不考虑行顺序。
参考:#3822
sql
- [sql] [bug]
修复了由于新增的执行 sqlDefaultGenerator
对象的“包装可调用”函数而引起的回归问题,在默认可调用对象是functools.partial
或其他没有__module__
属性的对象时,会引发__module__
的属性错误。
参考:#3823 - [sql] [bug] [postgresql]
修复了Enum
类型中的回归问题,其中事件处理程序在类型对象被复制时未被传递,这是由于在#3250中添加了一个冲突的 copy()方法。在复制列时,例如在 tometadata()中或在使用带有列的声明性混合时,通常会发生此复制。事件处理程序的缺失会影响为非本地枚举类型创建的约束,但更为关键的是在 PostgreSQL 后端的 ENUM 对象上。
参考:#3827
postgresql
- [postgresql] [bug] [sql]
更改了生成多值插入语句的绑定参数时使用的命名约定,以便编号参数名称不会与 WHERE 子句中的匿名参数发生冲突,这在 PostgreSQL ON CONFLICT 结构中现在很常见。
参考:#3828
orm
- [orm] [bug]
修复了一个 bug,该 bug 涉及在许多对一懒加载器的另一侧禁用连接集合急加载器的规则,首次添加在#1495中,如果父对象有一些其他与之关联的懒加载器绑定的查询选项,该规则将失败。
参考:#3824 - [orm] [bug]
修复了自引用实体中延迟列加载问题,类似于#3431、#3811中的问题,其中由于自引用的急加载,实体在行中出现在多个位置;当延迟加载器仅适用于其中一个路径时,“present”列加载器现在将覆盖该实体的延迟非加载,而不考虑行顺序。
参考:#3822
sql
- [sql] [bug]
修复了由于新增函数执行 sqlDefaultGenerator
对象的“wrap callable”函数而引起的回归,当默认可调用函数为functools.partial
或其他没有__module__
属性的对象时,会引发__module__
属性错误。
参考:#3823 - [sql] [bug] [postgresql]
修复了Enum
类型中的回归,其中事件处理程序在类型对象被复制的情况下未传递,这是由于在#3250中添加的冲突的 copy()方法。在复制列时,例如在 tometadata()中或在使用具有列的声明性 mixin 时,会正常发生此复制。事件处理程序的缺失会影响为非本地枚举类型创建的约束,但更为关键的是 PostgreSQL 后端的 ENUM 对象。
参考:#3827
postgresql
- [postgresql] [bug] [sql]
更改了生成多值插入语句的绑定参数时使用的命名约定,以便编号参数名称不会与 WHERE 子句中的匿名参数发生冲突,这在 PostgreSQL ON CONFLICT 结构中现在很常见。
参考:#3828
1.1.1
发布日期:2016 年 10 月 7 日
mssql
- [mssql] [bug]
在#3810和#3814中添加的“SELECT SERVERPROPERTY”查询在未知的 Pyodbc 和 SQL Server 组合上失败。虽然预料到了这个函数的失败,但异常捕获不够广泛,因此现在捕获所有形式的 pyodbc.Error。
参考资料:#3820
杂项
- [bug] [核心]
当检测到各种缺失主键的情况时,将引发的 CompileError 更改为警告。语句再次传递给数据库,将会失败,并像往常一样引发 DBAPI 错误(通常是 IntegrityError)。
参见
不再为复合主键列隐式启用.autoincrement 指令
参考资料:#3216
mssql
- [mssql] [bug]
在#3810和#3814中添加的“SELECT SERVERPROPERTY”查询在未知的 Pyodbc 和 SQL Server 组合上失败。虽然预料到了这个函数的失败,但异常捕获不够广泛,因此现在捕获所有形式的 pyodbc.Error。
参考资料:#3820
杂项
- [bug] [核心]
当检测到各种缺失主键的情况时,将引发的 CompileError 更改为警告。语句再次传递给数据库,将会失败,并像往常一样引发 DBAPI 错误(通常是 IntegrityError)。
参见
不再为复合主键列隐式启用.autoincrement 指令
参考资料:#3216
1.1.0
发布日期:2016 年 10 月 5 日
orm
- [orm] [功能]
加强了新的“raise”懒加载策略,还包括一个“raise_on_sql”变体,可以通过relationship.lazy
和raiseload()
两种方式使用。这个变体只有在懒加载实际发出 SQL 时才会引发,而不是在任何时候调用懒加载机制时引发。
参考资料:#3812 - [orm] [功能]
Query.group_by()
方法现在如果传递None
参数,则会重置分组集合,就像Query.order_by()
长期以来的工作方式一样。感谢 Iuri Diniz 提供的拉取请求。 - [orm] [更改]
将 False 传递给Query.order_by()
以取消所有排序已弃用;使用 False 或 None 调用此方法不再有任何区别。 - [orm] [bug]
修复了一个错误,即连接的贪婪加载将无法针对多态加载的映射器进行加载,其中多态性在未映射的表达式上设置,例如 CASE 表达式。
此更改也已回溯到:1.0.16
引用:#3800 - [orm] [bug]
修复了一个错误,即对通过Session.bind_mapper()
、Session.bind_table()
或构造函数发送的无效绑定引发的 ArgumentError 未能被正确引发。
此更改也已回溯到:1.0.16
引用:#3798 - [orm] [bug]
修复了子查询贪婪加载中的错误,在这种情况下,“of_type()”对象的子查询加载链接到第二个子查询加载的普通映射类,或者是几个“of_type()”属性的较长链,将无法正确链接连接。
此更改也已回溯到:1.0.15
引用:#3773, #3774 - [orm] [bug]
ORM 属性现在可以分配任何具有__clause_element__()
属性的对象,这将导致内联 SQL,就像任何ClauseElement
类一样。这涵盖了其他通过进一步表达式构造未转换的映射属性。
引用:#3802 - [orm] [bug]
对票务:3431中首次引入的错误修复进行了调整,涉及到在单个结果集中出现多个上下文中的对象的情况,这样一个贪婪的加载器将会将相关对象的值设置为 None,但仍然会触发加载该属性。之前,调整仅在次要行中贪婪加载属性时才尊重非 None 值的到来。
引用:#3811 - [orm] [bug]
修复了新的SessionEvents.persistent_to_deleted()
事件中的错误,其中目标对象可能在事件触发之前被垃圾回收。
引用:#3808 - [orm] [bug]
relationship()
构造的 primaryjoin 现在可以包含一个bindparam()
对象,该对象包含一个可调用函数来生成值。以前,延迟加载策略与此用法不兼容,并且还会无法正确检测是否应该使用“use_get”条件,如果主键与绑定参数有关。
参考:#3767 - [orm] [bug]
从 ORM 刷新过程中发出的 UPDATE 现在可以适应对象主键中的列的 SQL 表达式元素,如果目标数据库支持 RETURNING 以提供新值,或者如果为了触发其他触发器/列的 onupdate 而将 PK 值设置为“自身”。
参考:#3801 - [orm] [bug]
修复了一个 bug,即“简单的一对多”条件,允许延迟加载使用来自标识映射的 get() 失败的情况,如果关系的 primaryjoin 具有由 AND 分隔的多个子句,并且这些子句的顺序与每个子句中比较的主键列的顺序不同。这种顺序差异发生在复合外键的情况下,其中引用方的表绑定列在 .c 集合中的顺序与被引用方的主键列不同……如果使用声明性混入和/或 declared_attr 来设置列,则会经常发生这种情况。
参考:#3788 - [orm] [bug]
当映射上的两个@validates
装饰器使用相同名称时,会引发异常。一次只支持一个特定名称的验证器,没有机制将它们链接在一起,因为在函数装饰器级别上验证器的顺序无法确定。
另请参阅
相同名称的 @validates 装饰器现在会引发异常
参考:#3776 - [orm] [bug]
在configure_mappers()
过程中引发的映射器错误现在在异常消息中明确包含原始映射器的名称,以帮助处理那些包装异常本身不包含源映射器的情况。感谢 John Perkins 的拉取请求。
orm 声明性
- [orm] [declarative] [change]
构建一个继承自另一个类的声明性基类也将继承其文档字符串。这意味着as_declarative()
的行为更像一个普通的类装饰器。
sql
- [sql] [bug]
修复了Table
中的错误,其中内部方法_reset_exported()
会破坏对象的状态。此方法用于可选择对象,并在某些情况下由 ORM 调用;错误的映射器配置可能导致 ORM 在Table
对象上调用此方法。
此更改也回溯到:1.0.15
参考:#3755 - [sql] [bug]
执行选项现在可以在编译时从语句传播到最外层语句,因此,如果嵌入元素想要将“autocommit”设置为 True,例如,它可以将此传播到封闭语句。目前,此功能已启用用于嵌入在 SELECT 语句中的面向 DML 的 CTE,例如,在 SELECT 语句中的 INSERT/UPDATE/DELETE。
参考:#3805 - [sql] [bug]
通过Column.server_default
参数作为列默认值发送的字符串现在已经为引号进行了转义。
参见
String server_default 现在是文字引用
参考:#3809 - [sql] [bug] [postgresql]
添加了由 PostgreSQL 使用的编译器级别标志,用于在涉及 JSON、HSTORE 索引运算符以及其操作数的操作中放置比通常由优先规则生成的额外括号,因为已经观察到 PostgreSQL 至少在 HSTORE 索引运算符之间的优先规则在 9.4 和 9.5 之间不一致。
参考:#3806 - [sql] [bug] [mysql]
BaseException
异常类现在被Connection
的异常处理例程拦截,并包括ConnectionEvents.handle_error()
事件的处理。在系统级别异常(不是Exception
的子类,包括KeyboardInterrupt
和 greenletGreenletExit
类)的情况下,默认情况下Connection
现在被作废,以防止在处于未知且可能已损坏状态的数据库连接上发生进一步操作。MySQL 驱动程序是这种变化的主要目标,但这种变化适用于所有 DBAPIs。
参见
Engines 现在作废连接,运行 BaseException 的错误处理程序
参考:#3803 - [sql] [bug]
“eq”和“ne”运算符不再是“关联”运算符列表的一部分,但它们仍然被认为是“可交换的”。这允许在 SQL 级别保持带有括号的表达式(x == y) == z
。感谢 John Passaro 的拉取请求。
参考:#3799 - [sql] [bug]
对于包含未命名Column
对象的表达式的字符串化,例如 ORM 错误报告中经常发生的情况,现在在字符串上下文中呈现名称为“”,而不是引发编译错误。
参考:#3789 - [sql] [bug]
当 ClauseElement 或非 SQLAlchemy 对象被错误地传递给.execute()
时,抛出更具描述性的异常/消息;在所有情况下一致地引发新异常 ObjectNotExecutableError。
参考:#3786 - [sql] [bug] [mysql] [postgresql]
修复了 JSON 数据类型中的回归,其中 JSON 索引值的“文字处理器”不会被调用。现在从 JSONIndexType 和 JSONPathType 内调用本机 String 和 Integer 数据类型。这适用于通用、PostgreSQL 和 MySQL JSON 类型,还依赖于#3766。
参考:#3765 - [sql] [bug]
修复了当将 SQL 表达式包装在 ORM 风格的__clause_element__()
构造内部时,Index
无法从复合 SQL 表达式中提取列的错误。这个 bug 也存在于 1.0.x 中,但在 1.1 中更为明显,因为 hybrid_property @expression 现在返回一个包装元素。
参考:#3763
postgresql
- [postgresql] [bug]
调整 ON CONFLICT,使���inserted_primary_key”逻辑能够适应没有 INSERT 或 UPDATE 且没有净变化的情况。在这种情况下,值为 None,而不是在异常上失败。
参考:#3813 - [postgresql] [bug]
修复了新的 PG“on conflict”构造中的问题,其中包括“excluded”命名空间的列在语句的 WHERE 子句中不会被表格限定。
- 参考:#3807
mysql
- [mysql] [bug]
增加了对解析 MySQL/Connector 布尔值和整数参数的支持,这些参数在 URL 查询字符串中:connection_timeout、connect_timeout、pool_size、get_warnings、raise_on_warnings、raw、consume_results、ssl_verify_cert、force_ipv6、pool_reset_session、compress、allow_local_infile、use_pure。
这个更改也被回溯到:1.0.15
参考:#3787 - [mysql] [bug]
修复了在 MySQL 下“literal_binds”标志不会传播到 CAST 表达式的错误。
引用:#3766
mssql
- [mssql] [bug]
将用于获取“默认模式名称”的查询更改为使用“schema_name()”函数,而不是查询数据库原则表的查询,因为已经有人报告说前一个系统在 Azure 数据仓库版本上不可用。希望这将最终在所有 SQL Server 版本和身份验证样式上工作。
此更改也回溯至:1.0.16
引用:#3810 - [mssql] [bug]
更新了 pyodbc 的服务器版本信息方案,使用 SQL Server 的 SERVERPROPERTY(),而不是依赖于 pyodbc.SQL_DBMS_VER,后者在特别是 FreeTDS 中仍然不可靠。
此更改也回溯至:1.0.16
引用:#3814 - [mssql] [bug]
将错误代码 20017“服务器意外结束”添加到断开连接异常列表中,导致连接池重置。感谢 Ken Robbins 提供的拉取请求。
此更改也回溯至:1.0.16
引用:#3791
misc
- [bug] [orm.declarative]
修复了一个错误,设置一个单表继承子类的连接表子类,该连接表子类包含一个额外的列,会破坏映射表的外键集合,从而干扰关系的初始化。
此更改也回溯至:1.0.16
引用:#3797
orm
- [orm] [feature]
增强了新的“raise”懒惰加载器策略,还包括一个“raise_on_sql”变体,通过relationship.lazy
以及raiseload()
都可以使用。此变体仅在懒加载实际上会发出 SQL 时才引发,而不是在调用懒加载机制时引发。
引用:#3812 - [orm] [feature]
Query.group_by()
方法现在如果传递None
参数,则重置分组集合,就像Query.order_by()
一直以来的工作方式一样。感谢 Iuri Diniz 提供的拉取请求。 - [orm] [change]
将 False 传递给Query.order_by()
以取消所有排序已弃用;使用 False 或 None 调用此方法不再有区别。 - [orm] [bug]
修复了连接急切加载在多态加载的映射器中失败的错误,其中多态 _on 设置为未映射表达式,例如 CASE 表达式。
此更改也回溯到:1.0.16
参考:#3800 - [orm] [bug]
修复了对通过Session.bind_mapper()
、Session.bind_table()
或构造函数发送到会话的无效绑定引发的 ArgumentError 未能正确引发的错误。
此更改也回溯到:1.0.16
参考:#3798 - [orm] [bug]
修复了子查询急切加载中的错误,其中一个“of_type()”对象的子查询加载链接到第二个普通映射类的子查询加载,或者更长的几个“of_type()”属性链,将无法正确链接连接。
此更改也回溯到:1.0.15
参考:#3773, #3774 - [orm] [bug]
现在可以将 ORM 属性分配给具有__clause_element__()
属性的任何对象,这将导致内联 SQL 的生成方式与任何ClauseElement
类一样。这涵盖了其他映射属性,否则不会被进一步的表达式构造转换。
参考:#3802 - [orm] [bug]
对首次引入的[票号:3431]中的错误修复进行了调整,涉及到一个对象在单个结果集中出现在多个上下文中,因此会触发一个急切加载器,将相关对象值设置为 None,从而满足该属性的加载。之前,该调整只会在次要行中急切加载属性的非 None 值到达时才会生效。
参考:#3811 - [orm] [bug]
修复了新的SessionEvents.persistent_to_deleted()
事件中的错误,其中目标对象可能在事件触发之前被垃圾回收。
参考:#3808 - [orm] [bug]
relationship()
构造函数的 primaryjoin 现在可以包括一个包含可调用函数以生成值的bindparam()
对象。以前,惰性加载策略与此用法不兼容,并且还会无法正确检测是否应该使用“use_get”标准,如果主键与绑定参数有关。
参考:#3767 - [orm] [bug]
从 ORM 刷新过程中发出的 UPDATE 现在可以适应对象主键中的列的 SQL 表达式元素,如果目标数据库支持 RETURNING 以提供新值,或者如果将 PK 值设置为“自身”以用于触发其他触发器/列的 onupdate。
参考:#3801 - [orm] [bug]
修复了一个 bug,即“简单的一对多”条件允许惰性加载使用来自标识映射的 get()时,如果关系的 primaryjoin 有多个由 AND 分隔的子句,并且这些子句的顺序与每个子句中比较的主键列的顺序不同,则无法调用。这种排序差异发生在复合外键的情况下,其中引用方的表绑定列在.c 集合中的顺序与被引用方的主键列不同……如果使用声明性 mixin 和/或 declared_attr 设置列,则会经常发生这种情况。
参考:#3788 - [orm] [bug]
当映射上的两个@validates
装饰器使用相同名称时,会引发异常。一次只支持一个特定名称的验证器,没有机制将它们链接在一起,因为在函数装饰器级别上验证器的顺序无法确定。
另请参阅
相同名称的@validates 装饰器现在会引发异常
参考:#3776 - [orm] [bug]
在configure_mappers()
期间引发的映射器错误现在在异常消息中明确包含源映射器的名称,以帮助处理那些包装异常本身不包含源映射器的情况。感谢 John Perkins 的拉取请求。
orm declarative
- [orm] [declarative] [change]
构建一个继承自另一个类的声明性基类也会继承其文档字符串。这意味着as_declarative()
的行为更像一个普通的类装饰器。
sql
- [sql] [bug]
修复了Table
中的错误,其中内部方法_reset_exported()
会破坏对象的状态。此方法旨在用于可选择对象,并在某些情况下由 ORM 调用;错误的映射器配置可能导致 ORM 在Table
对象上调用此方法。
此更改也回溯到:1.0.15
参考:#3755 - [sql] [bug]
执行选项现在可以在编译时从语句内传播到最外层语句,因此,如果嵌入元素想要将“autocommit”设置为 True,例如,它可以将此传播到封闭语句。目前,此功能已启用用于嵌入在 SELECT 语句内的面向 DML 的 CTE,例如,在 SELECT 内的 INSERT/UPDATE/DELETE。
参考:#3805 - [sql] [bug]
通过Column.server_default
参数作为列默认值发送的字符串现在已经为引号进行了转义。
另请参见
String server_default 现在是文字引用
参考:#3809 - [sql] [bug] [postgresql]
添加了由 PostgreSQL 使用的编译器级别标志,用于在涉及 JSON、HSTORE 索引操作符以及它们的操作数时放置比通常由优先规则生成的括号更多的操作符,因为观察到 PostgreSQL 至少对于 HSTORE 索引操作符的优先规则在 9.4 和 9.5 之间不一致。
参考:#3806 - [sql] [bug] [mysql]
现在Connection
的异常处理例程拦截了BaseException
异常类,并包括ConnectionEvents.handle_error()
事件的处理。在系统级别异常(不是Exception
的子类,包括KeyboardInterrupt
和 greenletGreenletExit
类)的情况下,默认情况下现在Connection
被使无效,以防止在处于未知且可能已损坏状态的数据库连接上发生进一步操作。MySQL 驱动程序是此更改的主要目标,但此更改适用于所有 DBAPIs。
另请参见
引擎现在使连接无效,运行 BaseException 的错误处理程序
参考:#3803 - [sql] [bug]
“eq”和“ne”运算符不再是“关联”运算符列表的一部分,尽管它们仍被认为是“可交换的”。这允许像(x == y) == z
这样的表达式在 SQL 级别上保持括号。感谢 John Passaro 提供的拉取请求。
参考:#3799 - [sql] [bug]
在许多情况下包括 ORM 错误报告中出现的未命名Column
对象的表达式字符串化,现在在字符串上下文中将名称呈现为“”��而不是引发编译错误。
参考:#3789 - [sql] [bug]
当 ClauseElement 或非 SQLAlchemy 对象被错误地传递给.execute()
时,引发一个更具描述性的异常/消息;在所有情况下一致地引发一个新的异常 ObjectNotExecutableError。
参考:#3786 - [sql] [bug] [mysql] [postgresql]
修复了 JSON 数据类型中的回归,其中 JSON 索引值的“literal processor”不会被调用的问题。现在从 JSONIndexType 和 JSONPathType 内部调用原生的 String 和 Integer 数据类型。这适用于通用的、PostgreSQL 和 MySQL 的 JSON 类型,还依赖于#3766。
参考:#3765 - [sql] [bug]
修复了Index
无法从包含在 ORM 风格__clause_element__()
构造内部的复合 SQL 表达式中提取列的错误。这个 bug 在 1.0.x 中也存在,但在 1.1 中更为明显,因为 hybrid_property @expression 现在返回一个包装元素。
参考:#3763
postgresql
- [postgresql] [bug]
调整了 ON CONFLICT,使“inserted_primary_key”逻辑能够适应没有 INSERT 或 UPDATE 且没有净变化的情况。在这种情况下,该值为 None,而不是在异常上失败。
参考:#3813 - [postgresql] [bug]
修复了新的 PG“on conflict”构造中的问题,其中包括“排除”命名空间的列在语句的 WHERE 子句中不会被表格限定。
- 参考:#3807
mysql
- [mysql] [bug]
增加了对解析 MySQL/Connector 布尔值和整数参数的支持,这些参数在 URL 查询字符串中:connection_timeout, connect_timeout, pool_size, get_warnings, raise_on_warnings, raw, consume_results, ssl_verify_cert, force_ipv6, pool_reset_session, compress, allow_local_infile, use_pure。
这个更改也被回溯到:1.0.15
参考:#3787 - [mysql] [bug]
修复了在 MySQL 下“literal_binds”标志不会传播到 CAST 表达式的 bug。
参考:#3766
mssql
- [mssql] [bug]
更改了用于获取“默认模式名称”的查询,从查询数据库主体表的查询更改为使用“schema_name()”函数,因为有报道称前一系统在 Azure Data Warehouse 版本上不可用。希望这将最终在所有 SQL Server 版本和认证样式上都起作用。
此更改也回溯到:1.0.16
参考:#3810 - [mssql] [bug]
更新了用于 pyodbc 的服务器版本信息方案,使用 SQL Server SERVERPROPERTY(),而不是依赖于 pyodbc.SQL_DBMS_VER,后者在 FreeTDS 中仍然不可靠。
此更改也回溯到:1.0.16
参考:#3814 - [mssql] [bug]
将错误代码 20017“服务器意外 EOF”添加到导致连接池重置的断开异常列表中。感谢 Ken Robbins 的拉取请求。
此更改也回溯到:1.0.16
参考:#3791
杂项
- [bug] [orm.declarative]
修复了一个 bug,即设置一个包含额外列的联接表子类的单表继承子类会破坏映射表的外键集合,从而干扰关系的初始化。
此更改也回溯到:1.0.16
参考:#3797
1.1.0b3
发布日期:2016 年 7 月 26 日
orm
- [orm] [change]
移除了一个警告,该警告可以追溯到 0.4 版本,当在通过联接或单表继承进行继承的两个映射器上放置同名关系时会发出警告。该警告不适用于当前的工作单元实现。
另请参阅
继承映射器上的同名关系不再警告
参考:#3749
sql
- [sql] [bug]
修复了一个新的 CTE 功能中的错误,用于在嵌套语句(通常是 SELECT)中作为 CTE 声明的 update/insert/delete 语句中,嵌入语句中的 oninsert 和 onupdate 值未被调用的问题。
参考:#3745 - [sql] [bug]
修复了一个新的 CTE 功能中的错误,即在 update/insert/delete 中,围绕语句的匿名(例如未传递名称)CTE
构造会失败的问题。
参考:#3744
postgresql
- [postgresql] [bug]
修复了TypeDecorator
和Variant
类型未被 PostgreSQL 方言深度检查以确定是否需要呈现 SMALLSERIAL 或 BIGSERIAL 而不是 SERIAL 的错误。
这个更改也被回溯到:1.0.14
参考:#3739
oracle
- [oracle] [bug]
修复了Select.with_for_update.of
中的错误,其中 Oracle 的“rownum”方法对 LIMIT/OFFSET 无法容纳“OF”子句内的表达式,这些表达式必须在顶层引用子查询中的表达式。如果需要,这些表达式现在将添加到子查询中。
这个更改也被回溯到:1.0.14
参考:#3741
misc
- [feature] [ext]
为新的 sqlalchemy.ext.indexable 扩展添加了一个“default”参数。 - [bug] [ext]
修复了sqlalchemy.ext.baked
中的错误,其中解除子查询急加载器查询的失败,由于变量作用域问题,当涉及多个子查询加载器时会失败。感谢 Mark Hahnenberg 的拉取请求。
这个更改也被回溯到:1.0.15
参考:#3743 - [bug] [ext]
sqlalchemy.ext.indexable 将在引发 AttributeError 时拦截 IndexError 和 KeyError。
orm
- [orm] [change]
移除了一个警告,该警告可以追溯到 0.4 版本,当一个同名关系被放置在通过联接或单表继承继承的两个映射器上时会发出警告。该警告不适用于当前的工作单元实现。
另请参阅
继承映射器上的同名关系不再警告
参考:#3749
sql
- [sql] [bug]
修复了新的 CTE 功能中的错误,用于在嵌套语句(通常是 SELECT)中作为 CTE 声明的 update/insert/delete 功能,其中 oninsert 和 onupdate 值未在嵌入语句中调用。
参考:#3745 - [sql] [bug]
修复了新的 CTE 功能中的错误,其中围绕语句的匿名(例如未传递名称)CTE
构造将失败。
参考:#3744
postgresql
- [postgresql] [bug]
修复了TypeDecorator
和Variant
类型未被 PostgreSQL 方言深度检查以确定是否需要渲染 SMALLSERIAL 或 BIGSERIAL 而不是 SERIAL 的 bug。
此更改也被回溯到:1.0.14
参考:#3739
oracle
- [oracle] [bug]
修复了Select.with_for_update.of
中的 bug,在 Oracle 的“rownum”方法中,LIMIT/OFFSET 无法适应“OF”子句中的表达式,这些表达式必须在子查询中的最顶层引用表达式。如果需要,这些表达式现在将添加到子查询中。
此更改也被回溯到:1.0.14
参考:#3741
杂项
- [feature] [ext]
为新的 sqlalchemy.ext.indexable 扩展添加了一个“default”参数。 - [bug] [ext]
修复了sqlalchemy.ext.baked
中的 bug,在涉及多个子查询加载器时,解除子查询贪婪加载器查询的问题由于变量作���域问题而失败。感谢 Mark Hahnenberg 的拉取请求。
此更改也被回溯到:1.0.15
参考:#3743 - [bug] [ext]
sqlalchemy.ext.indexable 在引发 AttributeError 时也会拦截 IndexError 和 KeyError。
1.1.0b2
发布日期:2016 年 7 月 1 日
sql
- [sql] [bug]
修复了 SQL 数学否定运算符中的问题,其中表达式的类型将不再是原始的数值类型。这会导致确定结果集行为的问题。
此更改也被回溯到:1.0.14
参考:#3735 - [sql] [bug]
修复了 sqlalchemy.util.Properties 的__getstate__
/__setstate__
方法由于 1.0 系列向__slots__
的过渡而无法工作的 bug。该问题可能会影响一些第三方应用程序。感谢 Pieter Mulder 的拉取请求。
此更改也被回溯到:1.0.14
参考:#3728 - [sql] [bug]
Boolean
数据类型在仅具有整数类型的后端上的处理已经在纯 Python 和 C 扩展版本之间保持一致,C 扩展版本将接受数据库中的任何整数值作为布尔值,而不仅仅是零和一;此外,发送到数据库的非布尔整数值将被强制转换为零或一,而不是作为原始整数值传递。
另请参阅
非本地布尔整数值在所有情况下被强制转换为零/一/无
引用:#3730 - [sql] [bug]
在Enum
中将验证规则稍微回滚,以允许未知字符串值通过,除非将标志validate_string=True
传递给 Enum;当然,任何其他类型的对象仍然被拒绝。虽然立即使用是允许与 LIKE 的枚举比较,但存在此使用表明可能有更多未知字符串比较用例,这暗示可能存在一些未知字符串插入用例。
引用:#3725
postgresql
- [postgresql] [bug] [ext]
在sqlalchemy.ext.compiler
扩展中进行了轻微的行为更改,其中已建立的构造的现有编译方案将被移除,如果该构造本身尚未拥有专用的__visit_name__
。这在 1.0 中很少见,但是在 1.1 中,ARRAY
子类ARRAY
并具有此行为。结果,为其他方言(例如 SQLite)设置编译处理程序将使主ARRAY
对象不再可编译。
引用:#3732
mysql
- [mysql] [bug]
在 不再生成带 AUTO_INCREMENT 的复合主键的隐式 KEY 中略微调整了“按自动增量排序主键列”的描述,因此,如果PrimaryKeyConstraint
被明确定义,列的顺序将完全保持不变,允许在必要时控制此行为。
引用:#3726
sql
- [sql] [bug]
修复了 SQL 数学否定运算符中的问题,其中表达式的类型将不再是原始表达式的数字类型。这将导致类型确定结果集行为的问题。
此更改也 回溯 到:1.0.14
引用:#3735 - [sql] [bug]
修复了 sqlalchemy.util.Properties 的__getstate__
/__setstate__
方法由于 1.0 系列向__slots__
过渡而无法正常工作的错误。该问题可能会影响一些第三方应用程序。感谢 Pieter Mulder 的拉取请求。
此更改也 回溯 到:1.0.14
引用:#3728 - [sql] [bug]
仅具有整数类型的后端执行的Boolean
数据类型的处理在纯 Python 和 C 扩展版本之间已经保持一致,即 C 扩展版本将接受数据库中的任何整数值作为布尔值,而不仅仅是零和一;此外,发送到数据库的非布尔整数值被强制转换为零或一,而不是作为原始整数值传递。
另请参阅
所有情况下将非本地布尔整数值强制转换为零/一/None
参考:#3730 - [sql] [bug]
在Enum
中稍微回退了验证规则,允许未知字符串值通过,除非向 Enum 传递了标志validate_string=True
;当然,任何其他类型的对象仍然被拒绝。虽然立即使用是为了允许与 LIKE 一起比较枚举,但存在这种用法表明可能存在更多未知字符串比较用例,这暗示可能还有一些未知字符串插入用例。
参考:#3725
postgresql
- [postgresql] [bug] [ext]
在sqlalchemy.ext.compiler
扩展中对行为进行了轻微更改,如果已建立的结构本身没有专用的__visit_name__
,则会删除该结构的现有编译方案。这在 1.0 中很少见,但在 1.1 中ARRAY
子类ARRAY
并具有此行为。因此,为其他方言(如 SQLite)设置编译处理程序将导致主ARRAY
对象不再可编译。
参考:#3732
mysql
- [mysql] [bug]
在不再为具有 AUTO_INCREMENT 的复合主键生成隐式 KEY 中稍微调整了“按自动增量排序主键列”的描述,因此如果明确定义了PrimaryKeyConstraint
,则列的顺序将保持完全一致,允许在必要时控制此行为。
参考:#3726
SqlAlchemy 2.0 中文文档(六十二)(5)https://developer.aliyun.com/article/1560763