Release: 1.4.25 | Release Date: September 22, 2021

SQLAlchemy 1.4 Documentation

1.1换热器

1.1.18

Released: March 6, 2018

postgresql

  • [postgresql] [bug] [py3k]

    修正了postgresql collate/array-adjustment中的错误,该错误在 #4006 其中,python 3.7正则表达式中的新行为导致修复失败。

    References: #4208

mysql

  • [mysql] [bug]

    MySQL方言现在使用 SELECT @@version 明确地发送给服务器,以确保我们得到了正确的版本信息。像maxscale这样的代理服务器会干扰传递给dbapi的connection.server版本值的值,因此这不再可靠。

    References: #4205

1.1.17

Released: February 22, 2018
  • [bug] [ext]

    修复了1.2.3和1.1.16中有关关联代理对象的回归,修订了 #4185 当计算关联代理的“拥有类”时,如果代理对象没有直接与映射类(如mixin)关联,则默认选择当前类。

    References: #4185

1.1.16

Released: February 16, 2018

orm

  • [orm] [bug]

    修复了“更新后”功能中的问题,即在父对象已被删除但依赖对象未被删除时发出更新。这个问题已经存在很长一段时间了,但是自从1.2声明了与post_更新匹配的行之后,这就产生了一个错误。

    References: #4187

  • [orm] [bug]

    修复问题导致的修复回归 #4116 影响1.2.2版和1.1.15版,这会导致错误计算 AssociationProxy 作为 NoneType 在某些声明性混合/继承情况下,以及如果从未映射的类访问关联代理,则为类。“找出所有者”逻辑已被一个深入的例程替换,该例程通过分配给类或子类的完整映射器层次结构进行搜索,以确定正确的(我们希望)匹配;如果找不到匹配,则不会分配所有者。如果代理用于未映射的实例,则现在会引发异常。

    References: #4185

  • [orm] [bug]

    修复了在嵌套或子事务回滚过程中删除的对象(该对象的主键也发生了变化)无法从会话中正确删除的错误,从而导致在使用会话时出现后续问题。

    References: #4151

sql

  • [sql] [bug]

    补充 nullsfirst()nullslast() 作为顶级导入 sqlalchemy.sqlalchemy.sql. 命名空间。拉取请求由Lele Gaifax提供。

  • [sql] [bug]

    固定错误 Insert.values() 其中结合使用“多值”格式 Column 对象作为键而不是字符串将失败。拉车请求由Aubrey Stark Toller提供。

    References: #4162

postgresql

  • [postgresql] [bug]

    将“ssl syscall error:operation timed out”添加到触发psycopg2驱动程序“disconnect”方案的消息列表中。拉车请求由Andr_Cruz提供。

  • [postgresql] [bug]

    在PostgreSQL方言接受的关键字列表中添加了“truncate”作为“autocommit”-触发关键字。拉扯请求由雅各布·海斯提供。

mysql

  • [mysql] [bug]

    修复了mysql“concat”和“match”操作符未能将kwarg传播到左右表达式,导致编译器选项(如“literal_binds”)失败的错误。

    References: #4136

misc

  • [bug] [pool]

    修复了一个相当严重的连接池错误,其中用户定义的连接刷新后获得的连接 DisconnectionError 或者,由于1.2发布的“pre-pung”功能,如果通过weakref cleanup将连接返回到池中(例如,前向对象被垃圾收集),则无法正确重置;weakref仍将引用以前无效的dbapi连接,而该连接将错误地调用重置操作。这将导致日志中的堆栈跟踪和在不重置的情况下签入池的连接,这可能导致锁定问题。

    References: #4184

1.1.15

Released: November 3, 2017

orm

  • [orm] [bug] [ext]

    修正了关联代理无意中链接到 AliasedClass 对象,如果首先使用 AliasedClass 作为父级,在后续使用时导致错误。

    References: #4116

  • [orm] [bug]

    修复了ORM关系警告继承层次结构中的兄弟类发生冲突的同步目标(例如,两个关系都将写入同一列)的错误,因为这两个关系在写入期间实际上不会发生冲突。

    References: #4078

  • [orm] [bug]

    修复了针对单个表继承实体使用的相关select在外部查询中无法正确呈现的错误,因为对单个继承鉴别器条件的调整不适当地将条件重新应用到外部查询。

    References: #4103

orm declarative

  • [orm] [declarative] [bug]

    修复了一个缺陷,其中描述符位于基于 AbstractConcreteBase 在刷新操作期间被引用,导致错误,因为属性未映射为映射器属性。对于其他属性(如由添加的“type”列),也可能出现类似的问题。 AbstractConcreteBase 但是,如果类未能在其映射器中包含“concrete=true”,则此处的检查也应防止该场景导致问题。

    References: #4124

sql

  • [sql] [bug]

    固定错误在哪里 __repr__ 属于 ColumnDefault 如果参数是元组,则会失败。拉车请求,由Nicolas Caniart提供。

    References: #4126

  • [sql] [bug]

    修复了最近添加的错误 ColumnOperators.any_()ColumnOperators.all_() 方法作为方法调用时无法工作,而不是使用独立函数 any_()all_() . 还为这些相对非抽象的SQL运算符添加了文档示例。

    References: #4093

postgresql

  • [postgresql] [bug]

    ARRAY 与collate结合使用的类,如 #4006 无法容纳多维数组。

    References: #4006

  • [postgresql] [bug]

    固定错误 array_agg 传递已为类型的参数的函数 ARRAY 如PostgreSQL array 构造,将生成 ValueError ,因为函数试图嵌套数组。

    References: #4107

  • [postgresql] [bug]

    修复了PostgreSQL中的错误 Insert.on_conflict_do_update() 这将阻止INSERT语句用作CTE,例如VIA Insert.cte() 在另一个语句中。

    References: #4074

mysql

  • [mysql] [bug]

    当检测到Mariadb 10.2.8或10.2系列中的更早版本时发出警告,因为在这些版本中存在检查约束的主要问题,这些问题已在10.2.9版本中解决。

    请注意,此changelog消息不是用sqlacalchemy 1.2.0b3发布的,并且是逆向添加的。

    References: #4097

  • [mysql] [bug]

    MySQL5.7.20现在警告使用@tx_隔离变量;现在执行版本检查并使用@transaction_隔离来防止此警告。

    References: #4120

  • [mysql] [bug]

    修正了当前的时间戳在MariaDB 10.2系列中由于语法变化而不能正确反映的问题,其中函数现在表示为 current_timestamp() .

    References: #4096

  • [mysql] [bug]

    MariaDB 10.2现在支持CHECK约束(警告:由于 #4097 ). 现在,当这些检查约束出现在 SHOW CREATE TABLE 输出。

    References: #4098

sqlite

  • [sqlite] [bug]

    修正了当引用的表在远程模式中时,SQLite检查约束反射会失败的错误,例如在SQLite上,ATTACH引用的远程数据库。

    References: #4099

mssql

  • [mssql] [bug]

    为SQL Server的pyodbc方言添加了完整的“连接关闭”异常代码,包括“08S01”、“01002”、“08003”、“08007”、“08S02”、“08001”、“hyt00”、“hy010”。以前,只涉及“08S01”。

    References: #4095

1.1.14

Released: September 5, 2017

orm

  • [orm] [bug]

    固定错误 Session.merge() 沿着类似于 #4030 ,如果在合并例程实际检索对象之前立即对目标对象进行垃圾收集,则对标识映射中的目标对象进行内部检查可能会导致错误。

    References: #4069

  • [orm] [bug]

    修复了一个 undefer_group() 如果该选项从使用联接的预加载进行加载的关系扩展,则无法识别该选项。此外,由于错误导致执行的工作量过大,在结果集列的初始计算中,python函数调用计数也提高了20%,补充了 #3915 .

    References: #4048

  • [orm] [bug]

    ORM标识映射中的固定争用条件,这将导致在加载操作期间不适当地删除对象,从而导致重复的对象标识发生,特别是在涉及对象重复数据消除的联合的热切加载下。这个问题专门针对弱引用的垃圾收集,并且只在Pypy解释器下观察到。

    References: #4068

  • [orm] [bug]

    固定错误 Session.merge() 其中集合中主键属性设置为的对象 None 对于通常是自动增量的密钥,将被视为内部重复数据消除过程的一部分的数据库持久化密钥,导致只有一个对象实际插入到数据库中。

    References: #4056

  • [orm] [bug]

    InvalidRequestError 当a synonym() 用于不针对 MapperProperty ,例如关联代理。以前,如果试图定位不存在的属性,就会发生递归溢出。

    References: #4067

sql

  • [sql] [bug]

    修改了窗口函数的范围规范,允许范围左侧为正,右侧为负,例如(1,3)为“1 following and 3 following”,从而允许范围内的两个相同的前导或后导关键字。

    References: #4053

1.1.13

Released: August 3, 2017

oracle

  • [oracle] [bug] [performance] [py2k]

    修正导致的固定性能回归 #3937 其中,从5.3版开始的cx_Oracle删除了 .UNICODE 名称空间中的符号,该符号被解释为cx_oracle的“with_unicode”模式被无条件打开,它调用sqlAlchemy端的函数,该函数无条件地将所有字符串转换为unicode并造成性能影响。事实上,根据cx-oracle的作者,从5.1开始,“with-unicode”模式已经被完全删除,因此,如果在python 2下检测到cx-oracle 5.1或更高版本,则不再需要昂贵的unicode转换函数,并且禁用这些函数。在下删除的针对“with_unicode”模式的警告 #3937 也会恢复。

    This change is also backported to: 1.0.19

    References: #4035

1.1.12

Released: July 24, 2017

orm

  • [orm] [bug]

    修正了从1.1.11开始的回归,其中向包含具有子查询加载关系的实体的查询中添加额外的非实体列将失败,因为1.1.11中添加的检查是由于 #4011 .

    References: #4033

  • [orm] [bug]

    修正了1.1中添加的JSON空评估逻辑作为 #3514 如果逻辑不支持与 Column 那是地图。

    References: #4031

  • [orm] [bug]

    补充 KeyError 检查中的所有方法 WeakInstanceDict 哪里有支票 key in dict 然后是对该键的索引访问,以防止垃圾收集争用,因为在加载时,在代码假定该键存在后,可以从dict中删除该键,从而导致非常罕见的 KeyError 加薪。

    References: #4030

oracle

  • [oracle] [feature] [postgresql]

    添加新关键字 Sequence.cacheSequence.orderSequence ,以允许呈现Oracle和PostgreSQL理解的缓存参数,以及Oracle理解的顺序参数。拉车请求由David Moore提供。

misc

  • [bug] [py3k] [tests]

    修复了测试夹具中的问题,该问题与自python 3.6.2起涉及上下文管理器的更改不兼容。

    This change is also backported to: 1.0.18

    References: #4034

1.1.11

Released: Monday, June 19, 2017

orm

  • [orm] [bug]

    修复了子查询抢先加载的问题,该问题从中修复的一系列问题继续进行。 #2699#3106#3893 包括“子查询”在从联接的继承子类开始时包含正确的FROM子句,然后子查询从基类预先加载到关系,而查询还包含针对子类的条件。以前的通知单中的修复不适用于从第一级更深入地加载的附加子查询加载操作,因此该修复已被进一步推广。

    References: #4011

sql

postgresql

  • [postgresql] [bug]

    继续修复1.1.8中发布的正确处理PostgreSQL版本字符串“10devel”,额外的regexp bump处理形式为“10beta1”的版本字符串。虽然PostgreSQL现在提供了更好的方法来获取这些信息,但是我们坚持使用regexp至少1.1.x,以尽可能减少与旧版或备用PostgreSQL数据库兼容的风险。

    References: #4005

  • [postgresql] [bug]

    修复了使用中的错误 ARRAY 对于具有排序规则功能的字符串类型,排序规则将无法在创建表中生成正确的语法。

    References: #4006

mysql

  • [mysql] [bug]

    MySQL5.7已经为“show variables”命令引入了权限限制;现在,当show不返回行时,MySQL方言将处理,特别是对于SQL_模式的初始提取,并且将发出一条警告,提示用户权限应该修改,以允许该行出现。

    References: #4007

mssql

  • [mssql] [bug]

    修复了使用Azure数据仓库时必须从其他视图提取SQL Server事务隔离的错误,现在对这两个视图都尝试查询,如果失败继续提供对新SQL Server版本中未来任意API更改的最佳恢复能力,则无条件地引发NotImplemented。

    References: #3994

  • [mssql] [bug]

    添加了占位符类型 XML 到SQL Server方言,以便将包含此类型的反射表重新呈现为创建表。该类型没有特殊的往返行为,当前也不支持其他限定参数。

    References: #3973

oracle

  • [oracle] [bug]

    当使用6.0b1或更高版本的dbapi时,对两阶段事务的支持已完全删除。在任何情况下,两阶段功能在cx_Oracle 5.x下都不可用,cx_Oracle 6.x删除了此功能所依赖的连接级别“two phase”标志。

    References: #3997

1.1.10

Released: Friday, May 19, 2017

orm

  • [orm] [bug]

    修复了级联(如“删除孤立对象”(也包括其他对象)将无法定位链接到关系的对象,而该关系本身是继承关系中子类的本地关系,从而导致操作无法进行的错误。

    References: #3986

schema

  • [schema] [bug]

    ArgumentError 如果一个 ForeignKeyConstraint 对象是用不匹配的“本地”列和“远程”列创建的,否则会导致约束的内部状态不正确。注意,这也会影响方言的反射过程为外键约束生成一组不匹配的列的条件。

    References: #3949

postgresql

  • [postgresql] [bug]

    为grant、revoke关键字添加了“autocommit”支持。拉扯请求由雅各布·海斯提供。

mysql

  • [mysql] [bug]

    删除了一个古老且不必要的对UTC时间戳mysql函数的截取,这妨碍了它与参数一起使用。

    References: #3966

  • [mysql] [bug]

    修复了MySQL方言中在呈现创建表时与分区选项一起呈现表选项的错误。与分区相关的选项需要遵循表选项,而以前没有强制执行此顺序。

    References: #3961

oracle

  • [oracle] [bug]

    修正了cx_-oracle方言中的错误,cx_-oracle 6.0b1版的版本字符串解析将因“b”字符而失败。版本字符串解析现在通过regexp而不是简单的拆分。

    References: #3975

misc

  • [bug] [ext]

    在声明性类被垃圾收集并且新的automap prepare()操作同时进行的情况下,防止将“none”作为类进行测试,很少碰到在GC之后没有完全执行的weakref。

    References: #3980

1.1.9

Released: April 4, 2017

sql

  • [sql] [bug]

    由于 #3859 其中对表达式的“右侧”评估的调整基于 Variant 为了遵守底层类型的“右侧”规则,导致 Variant 在这种情况下,当我们 do 希望将左侧类型直接传输到右侧,以便可以将绑定级别规则应用于表达式的参数。

    References: #3952

  • [sql] [bug] [postgresql]

    改变了 ResultProxy 无条件地延迟“自动关闭”步骤,直到 Connection 对对象执行;如果postgresql on conflict with returning不返回任何行,则在以前不存在的用例中会发生autoclose,导致插入/更新/删除时无条件发生的常规autocommit行为失败。

    References: #3955

misc

1.1.8

Released: March 31, 2017

postgresql

  • [postgresql] [bug]

    增加了对“PostgreSQL 10devel”等开发版本的PostgreSQL版本字符串解析的支持。请示肖恩·麦卡利。

misc

1.1.7

Released: March 27, 2017

orm

engine

  • [engine] [bug]

    添加了一个异常处理程序,当的“autorollback”功能 Connection 它本身引发了一个异常。在py3k中,解释器自然会报告这两个异常,一个发生在处理另一个异常的过程中。这将继续回滚失败处理的一系列更改,这些更改是作为 #2696 1.0.12。

    References: #3946

sql

  • [sql] [bug] [postgresql]

    增加了对 Variant 以及 SchemaType 相互兼容的对象。也就是说,可以针对类似 Enum ,以及创建约束和/或数据库特定类型对象的说明将根据变量的方言映射正确传播。

    References: #2892

  • [sql] [bug]

    修复了编译器中的错误,其中保存点的字符串标识符将缓存在标识符引用字典中;由于这些标识符是任意的,因此如果单个标识符 Connection 使用了无限数量的保存点,以及如果savepoint子句构造直接与无限数量的保存点名称一起使用。内存泄漏会 not 影响绝大多数案例,通常 Connection 它以一个以“1”开头的简单计数器呈现保存点名称,在被丢弃之前,在每个事务或每个固定事务数的基础上使用。

    References: #3931

  • [sql] [bug]

    修复了新的“模式转换”功能中的错误,在该功能中,转换后的模式名称将在与列表达式一起呈现时以别名的形式调用;仅当源转换名称为“无”时才发生。“模式转换”功能现在只对 SchemaItemSchemaType 子类,即对应于数据库中DDL可创建结构的对象。

    References: #3924

oracle

  • [oracle] [bug]

    cx_oracle 5.3现在似乎在构建中硬编码此标志,这一事实揭示了cx_oracle使用unicode模式对cx_oracle的修复;使用此模式的内部方法没有使用正确的签名。

    This change is also backported to: 1.0.18

    References: #3937

1.1.6

Released: February 28, 2017

orm

  • [orm] [bug]

    解决了自早期版本以来,由于抽象的增加而积累起来的联合的热切装载器查询构造系统中的一些长期无人值守的性能问题。特设的使用 AliasedClass 每个查询的对象每次都会产生大量的列查找开销,已被缓存方法所取代,该方法利用 AliasedClass 在联接的预加载调用之间重用的对象。并对一些涉及到急连路径构造的力学问题进行了优化。端到端查询构造+具有最坏情况的联合加载器方案的单行提取测试的调用计数已减少约60%,与0.8.6相比减少了1.1.5%和42%。

    References: #3915

  • [orm] [bug]

    修正了“急用默认值”功能中的一个主要低效性,即当ORM显式地插入了空值的列值(对应于对象上未设置但未指定任何服务器默认值的属性)以及更新时过期的属性(尽管没有服务器ONUP),将发出不必要的选择。设置日期。由于这些列不是热心的默认值尝试使用的返回的一部分,因此它们也不应该被后置选择。

    References: #3909

  • [orm] [bug]

    修复了两个密切相关的bug,包括映射器的eager-eager-defaults标志和单表继承;一个bug中的eager-defaults逻辑会无意中尝试访问映射器的“exclude-properties”列表(由eager-defaults获取期间的单表继承声明性使用)的一部分的列,另一个bug如果为了获取默认值而完全加载行,将无法使用正确的继承映射器。

    References: #3908

  • [orm] [bug]

    修正了0.9.7中由于 #3106 这将导致在某些形式的多级子查询中针对别名实体加载不正确的查询,在最里面的子查询中包含不必要的额外FROM实体。

    References: #3893

orm declarative

  • [orm] [declarative] [bug]

    修复了声明性的“自动排除”功能(确保单个表继承子类的局部列不作为基的其他派生上的属性出现)在基的多个子类中不会生效的错误。

    References: #3895

sql

  • [sql] [bug]

    修正了 DDLEvents.column_reflect() 事件不允许将非文本表达式作为新列的“默认”值传递,例如 FetchedValue 对象以指示一般触发的默认值或 text() 构建。澄清了这方面的文件。

    References: #3905

postgresql

  • [postgresql] [bug]

    为“import foreign schema”、“refresh materialized view”postgresql语句添加了正则表达式,以便它们在通过连接或引擎调用时自动提交,而不需要显式事务。拉请求由Frazer McLean和Pawe_Stiasny提供。

    References: #3804

  • [postgresql] [bug]

    修复了PostgreSQL中的错误 ExcludeConstraint 其中“whereclause”和“using”参数在以下操作期间不会被复制 Table.tometadata() .

    References: #3900

mysql

  • [mysql] [bug]

    在mysql方言中添加了新的mysql 8.0保留字,以便正确引用。拉车请求由汉诺施利钦提供。

mssql

  • [mssql] [bug]

    向“get-isolation-level”功能添加了版本检查,该功能在第一次连接时调用,以便跳过SQL Server 2000版,因为在SQL Server 2005之前所需的系统视图不可用。

    References: #3898

misc

1.1.5

Released: January 17, 2017

orm

  • [orm] [bug]

    修复了在使用多态继承时,涉及对多个实体进行联合的热切加载的错误,这将引发“nonetype”对象没有属性“isa”。该问题由修复程序引入 #3611 .

    This change is also backported to: 1.0.17

    References: #3884

  • [orm] [bug]

    修复了在子查询加载中遇到的作为“现有”行的对象(例如,已从同一查询中的其他路径加载)的错误,不会为指定此加载的已卸载属性调用子查询加载程序。这个问题与 #3431#3811 这涉及到类似的问题与联合加载。

    References: #3854

  • [orm] [bug]

    这个 Session.no_autoflush 上下文管理器现在确保在“finally”块中重置autoflush标志,这样,如果在块中引发异常,状态仍然会适当地重置。拉请求,由Emin Arakelian提供。

  • [orm] [bug]

    修复了单表继承查询条件在 Bundle 结构被用作选择标准。

    References: #3874

  • [orm] [bug]

    修复了与 #3177 ,其中由 Query 将对联合外部应用“单一继承”条件(也引用错误的可选项),即使现在预期该条件已存在于内部子查询中。一旦对union()或另一个set操作调用,则现在将忽略单个继承条件。 Query 以同样的方式 Query.from_self() .

    References: #3856

examples

  • [examples] [bug]

    修复了版本化的_history示例的两个问题,一个问题是history表现在获得autoincrement=false,以避免1.1中有关具有autoincrement的复合主键的新错误;另一个问题是sqlite_autoincrement标志现在用于确保在sqlite上,即使某些行删除。拉车请求由卡洛斯·加克·蒙托罗提供。

    References: #3872

engine

  • [engine] [bug]

    “扩展现有”选项 Table 如果参数被用于 MetaData.reflect() (正如automap扩展所做的那样),因为表既反映在外键路径中,也直接反映在外键路径中。在 MetaData.reflect() 以这种方式防止双重反射。

    References: #3861

sql

  • [sql] [bug]

    修正了0.9中最初引入的错误,通过 #1068 其中order_by(<some label()>)将仅基于名称按标签名称排序,也就是说,即使标签表达式与可选表达式中的其他表达式完全不同,也会隐式或显式地存在。按标签排序的逻辑现在确保了标签表达式与在按标签名称排序之前解析为该名称的表达式相关;此外,该名称必须解析为其他表达式中显式的实际标签,而不仅仅是列名称。这个逻辑被小心地与ORDERBY(文本名称)功能分开,它的目的稍有不同。

    References: #3882

  • [sql] [bug]

    修正了1.1回归,其中由于拼写错误,“import*”不能用于sqlacalchemy.sql.expression any_all_ 功能。

    References: #3878

  • [sql] [bug]

    嵌入在中“无法反映”的异常中的引擎URL MetaData.reflect() 现在隐藏密码;同时 __repr__ 对于 TLEngine 现在表现得像 Engine ,隐藏URL密码。拉请求礼遇瓦莱里云丁。

  • [sql] [bug]

    固定问题 Variant 其中“右手胁迫”逻辑,继承自 TypeDecorator 会迫使右手进入 Variant 而不是 Variant 会的。在情况下 Variant ,我们希望类型的行为主要类似于基类型,因此 TypeDecorator 现在被重写以返回到底层包装类型的逻辑。目前主要与JSON相关。

    References: #3859

  • [sql] [bg]

    修复了文本绑定编译器标志的错误。 Insert 构造“多值”功能;随后的值现在呈现为文本。

    References: #3880

postgresql

  • [postgresql] [bug]

    修复了新的“冲突时进行更新”功能中的错误,在该功能中,update子句的“set”值将不受类型级别处理的影响,因为通常会同时处理用户定义的类型级别转换和方言所需的转换,如JSON数据类型所需的转换。此外,还澄清了 set_ 字典应匹配列的“key”,如果与列名称不同。对与列键不匹配的其余列名称发出警告;出于兼容性原因,这些列名称将像以前一样发出。

    References: #3888

  • [postgresql] [bug]

    这个 TIMETIMESTAMP 数据类型现在支持为“precision”设置零;以前的零将被忽略。拉请求由IONU CIOC RLAN提供。

mysql

  • [mysql] [feature]

    添加了一个新参数 mysql_prefix 支持 Index 构造,允许指定特定于mysql的前缀,如“fulltext”。拉车请求,由Joseph Schorr提供。

  • [mysql] [bug]

    当反射列上有一个“comment”关键字时,MySQL方言现在不会发出警告,但是请注意,注释还没有反映出来;这是未来版本的路线图。拉式请求,由Lele Long提供。

    References: #3867

mssql

  • [mssql] [bug]

    修复了SQL Server方言试图从select中为insert选择最后一行标识的错误,在select没有行的情况下失败。对于这样的语句,inline标志设置为true,表示不应提取最后一个主键。

    References: #3876

oracle

  • [oracle] [bug] [postgresql]

    修复了在源表包含自动递增序列的select中插入操作无法正确编译的错误。

    References: #3877

  • [oracle] [bug]

    修正了Oracle9.2上所有表查询中使用“compression”关键字的错误;尽管9i中引入了Oracle Docs状态表压缩,但实际列直到10.1才出现。

    References: #3875

firebird

  • [firebird] [bug]

    将Oracle引用的小写名称的修复移植到Firebird,以便能够正确反映以小写形式引用的表名,包括当表名来自get_table_names()inspection函数时。

    References: #3548

misc

  • [bug] [py3k]

    修复了与转义字符串相关的、不带“r”修饰符的python 3.6拒绝警告,并为python 3.6增加了测试覆盖率。

    This change is also backported to: 1.0.17

    References: #3886

1.1.4

Released: November 15, 2016

orm

  • [orm] [bug]

    固定错误 Session.bulk_update_mappings() 其中,备用的已命名主键属性无法正确跟踪到UPDATE语句中。

    This change is also backported to: 1.0.16

    References: #3849

  • [orm] [bug]

    固定错误 Session.bulk_save() 如果更新无法与实现版本ID计数器的映射一起正常工作。

    This change is also backported to: 1.0.16

    References: #3781

  • [orm] [bug]

    修正了错误 Mapper.attrsMapper.all_orm_descriptors 当首次调用这些访问器后,将映射器属性或其他ORM构造添加到映射器/类中时,其他派生属性将无法刷新。

    This change is also backported to: 1.0.16

    References: #3778

  • [orm] [bug]

    由于以下原因,集合中的固定回归 #3457 因此,在pickle或deepcopy期间反序列化将无法建立ORM集合的所有属性,从而导致进一步的突变操作失败。

    References: #3852

  • [orm] [bug]

    修复了长期存在的错误,其中“无加载”关系加载策略将导致backrefs和/或back_填充选项被忽略。

    References: #3845

engine

  • [engine] [bug]

    已从中删除长时间中断的“default_schema_name()”方法 Connection . 这种方法是从一个非常旧的版本中遗留下来的,并且不起作用(例如会提高)。拉请求提供本杰明·多普林格。

sql

postgresql

  • [postgresql] [bug]

    修正回归 #3807 (版本1.1.0),其中我们确保在postgresql's on conflict的do update部分的where子句中限定了tablename,但是 不能 将表名放在实际ON冲突本身的WHERE子句中。这是一个错误的假设,因此在 #3807 回滚。

    References: #3807, #3846

mysql

  • [mysql] [feature]

    为mysqlclient和pymysql方言添加了对服务器端游标的支持。此功能可通过 Connection.execution_options.stream_results 标志以及 server_side_cursors=True 方言论点与postgresql上psycopg2的相同。拉请求由罗马波多利亚卡提供。

  • [mysql] [bug]

    MySQL的本机枚举类型支持发送的任何无效值,响应时将返回一个空字符串。在EnUM的MySQL实现中添加了一个硬编码规则来检查“返回空白字符串”,以便将该空白字符串返回给应用程序,而不是被拒绝为非有效值。请注意,如果MySQL枚举将值链接到对象,则仍会返回空白字符串。

    References: #3841

sqlite

  • [sqlite] [bug]

    在pysqlcipher方言的pragma指令中添加引号,以适当地支持附加的密码参数。拉车请求由Kevin Jurczyk提供。

  • [sqlite] [bug] [py3k]

    使用pysqlcipher方言时,为pysqlcipher3 dbapi添加了可选导入。如果仅python-2的pysqlcipher dbapi不存在,则将尝试导入此包。拉车请求由Kevin Jurczyk提供。

mssql

  • [mssql] [bug]

    修正了pyodbc方言(以及大多数不工作的adodbapi方言)中的错误,即密码或用户名字段中存在的分号可以解释为另一个令牌的分隔符;当存在分号时,这些值现在被引用。

    This change is also backported to: 1.0.16

    References: #3762

1.1.3

Released: October 27, 2016

orm

  • [orm] [bug]

    固定回归 #2677 据此调用 Session.delete() 对于在该会话中已刷新为已删除的对象,将无法在标识映射中设置该对象(或拒绝该对象),从而导致刷新错误,因为该对象处于工作单元不适应的状态。在这种情况下,已还原1.1之前的行为,即将对象放回标识映射中,以便再次尝试DELETE语句,这将发出警告,指出预期行数不匹配(除非在会话外部还原该行)。

    References: #3839

  • [orm] [bug]

    固定回归式 Query 方法如 Query.update() 其他人会失败,如果 Query 是针对一系列映射列,而不是整个映射实体。

    References: #3836

sql

  • [sql] [bug]

    修复了在 Enum 因此,在字符串串联中使用枚举对象将保持 Enum 类型作为表达式的整体类型,生成缺少的查找。字符串连接到 Enum -类型化列现在使用 String 作为表达式本身的数据类型。

    References: #3833

  • [sql] [bug]

    作为副作用的固定回归 #2919 在用户定义的较不典型的情况下, TypeDecorator 这本身也是 SchemaType (而不是这样的实现)将导致跳过类型本身的列附件事件。

    References: #3832

postgresql

  • [postgresql] [bug]

    PostgreSQL表反射将确保 Column.autoincrement 当反射的主键列不是 Integer 数据类型,即使默认值与整数生成序列相关。如果列被创建为序列并且数据类型被更改,则可能发生这种情况。只有当1.1系列中的数据类型具有整数相关性时,autoincrement标志才能为true。

    References: #3835

1.1.2

Released: October 17, 2016

orm

  • [orm] [bug]

    修正了在一个多对一的懒惰加载程序的另一侧禁用一个联合集合的渴望加载程序的规则的错误,首先添加到 #1495 ,如果父对象具有与之关联的其他Lazyloader绑定查询选项,则规则将失败。

    References: #3824

  • [orm] [bug]

    固定的自引用实体,延迟的列加载问题与 #3431#3811 如果一个实体由于自引用的预先加载而在行中的多个位置上存在;当延迟加载程序只应用于其中一个路径时,“当前”列加载程序现在将覆盖该实体的延迟非加载,而不考虑行顺序。

    References: #3822

sql

  • [sql] [bug]

    修复了由执行SQL的“wrap callable”函数的新添加函数引起的回归 DefaultGenerator 对象,为引发属性错误 __module__ 当默认的可调用项是 functools.partial 或其他没有 __module__ 属性。

    References: #3823

  • [sql] [bug] [postgresql]

    固定回归 Enum 在复制类型对象的情况下,由于作为 #3250 . 这种复制通常发生在复制列的情况下,例如在tometata()中,或者在对列使用声明性混合时。不存在的事件处理程序将影响为非本机枚举类型创建的约束,但更为关键的是PostgreSQL后端的枚举对象。

    References: #3827

postgresql

  • [postgresql] [bug] [sql]

    更改了为多值insert语句生成绑定参数时使用的命名约定,这样编号的参数名称就不会与where子句的匿名参数冲突,就像postgresql on conflict构造中常见的那样。

    References: #3828

1.1.1

Released: October 7, 2016

mssql

  • [mssql] [bug]

    添加的“select serverproperty”查询 #3810#3814 在pyodbc和SQL Server的未知组合上失败。虽然预期此函数会失败,但异常捕获不够广泛,因此它现在捕获所有形式的pyodbc.error。

    References: #3820

misc

1.1.0

Released: October 5, 2016

orm

  • [orm] [feature]

    增强了新的“提升”懒惰加载程序策略,还包括“提升”SQL变体,可通过 relationship.lazy 以及 raiseload() . 此变量仅在惰性加载实际会发出SQL时引发,而在完全调用惰性加载机制时引发。

    References: #3812

  • [orm] [feature]

    这个 Query.group_by() 如果参数为 None 以同样的方式通过 Query.order_by() 已经工作很长时间了。拉取请求由Iuri Diniz提供。

  • [orm] [change]

    将false传递给 Query.order_by() 为了取消所有ORDER BY,已弃用;用FALSE或NONE调用此方法之间不再存在任何差异。

  • [orm] [bug]

    修正了对于一个多态加载的映射器来说,连接的预加载将失败,在这个映射器中,多态性被设置为一个未映射的表达式,如case表达式。

    This change is also backported to: 1.0.16

    References: #3800

  • [orm] [bug]

    修复了为通过发送到会话的无效绑定引发参数错误的错误。 Session.bind_mapper()Session.bind_table() ,否则将无法正确引发构造函数。

    This change is also backported to: 1.0.16

    References: #3798

  • [orm] [bug]

    修复了子查询预加载中的错误,即“of_type()”对象的子查询加载链接到普通映射类的第二个子查询加载,或多个“of_type()”属性的较长链,将无法正确链接联接。

    This change is also backported to: 1.0.15

    References: #3773, #3774

  • [orm] [bug]

    现在可以为ORM属性分配任何具有 __clause_element__() 属性,这将导致内联SQL ClauseElement 类是。这包括其他未被进一步表达式构造转换的映射属性。

    References: #3802

  • [orm] [bug]

    对年首次引入的错误修复进行了调整。 [门票:3431] 这涉及一个对象出现在单个结果集中的多个上下文中,这样一个将相关对象值设置为“无”的渴望加载程序仍将触发,从而满足该属性的负载。以前,调整只处理第二行中迫切加载的属性的非无值。

    References: #3811

  • [orm] [bug]

    修正了新的错误 SessionEvents.persistent_to_deleted() 事件,在该事件被激发之前,可以对目标对象进行垃圾收集。

    References: #3808

  • [orm] [bug]

    一个 relationship() 构造现在可以包含 bindparam() 包含可调用函数以生成值的对象。以前,lazy loader策略与此用法不兼容,另外,如果主键与绑定参数有关,则无法正确检测是否应使用“use-get”条件。

    References: #3767

  • [orm] [bug]

    如果目标数据库支持返回以提供新值,或者如果pk值设置为“自身”,以转发列上的其他触发器/onUpdate,则ORM刷新进程发出的更新现在可以为对象主键内的列提供SQL表达式元素。

    References: #3801

  • [orm] [bug]

    修正了这样一个错误:如果关系的primaryjoin有多个子句,并且这些子句与每个子句中比较的主键列的顺序不同,那么允许从标识映射中使用get()的延迟加载的“简单多对一”条件将无法被调用。对于复合外键,如果引用端的表绑定列在.c集合中的顺序与被引用端的主键列的顺序不相同,则会出现这种顺序差异……如果使用声明性混合和/或声明的_Attr来设置列,则会出现很多这种情况。

    References: #3788

  • [orm] [bug]

    当两个 @validates 映射上的装饰器使用相同的名称。一次只支持一个特定名称的验证器,没有将它们链接在一起的机制,因为函数修饰器级别的验证器的顺序不能确定。

    References: #3776

  • [orm] [bug]

    在期间引发的映射器错误 configure_mappers() 现在在异常消息中显式地包含源映射器的名称,以帮助在包装的异常本身不包括源映射器的情况下。拉请求礼遇约翰·帕金斯。

orm declarative

  • [orm] [declarative] [change]

    构造从另一个类继承的声明性基类也将继承其docstring。这意味着 as_declarative() 更像一个普通的类修饰器。

sql

  • [sql] [bug]

    固定错误 Table 其中内部方法 _reset_exported() 会损坏对象的状态。此方法适用于可选对象,在某些情况下由ORM调用;错误的映射器配置可能导致ORM在 Table 对象。

    This change is also backported to: 1.0.15

    References: #3755

  • [sql] [bug]

    执行选项现在可以在编译时从语句内传播到最外面的语句,这样,如果嵌入元素希望将“autocommit”设置为true,例如,它可以将其传播到封闭语句。目前,此功能是为嵌入在select语句中的面向DML的CTE启用的,例如,在select语句中插入/更新/删除。

    References: #3805

  • [sql] [bug]

    作为列默认值通过 Column.server_default 参数现在被转义为引号。

    References: #3809

  • [sql] [bug] [postgresql]

    PostgreSQL使用添加的编译器级标志来放置额外的括号,而不是通常由涉及JSON、hstore索引运算符的操作及其操作数的优先规则生成的,因为观察到PostgreSQL对hstore索引运算符的优先规则的匹配不一致9.4和9.5之间。

    References: #3806

  • [sql] [bug] [mysql]

    这个 BaseException 异常类现在被 Connection ,包括 ConnectionEvents.handle_error() 事件。这个 Connection 现在是 失效的 如果系统级异常不是 Exception 包括 KeyboardInterrupt 还有格林莱特 GreenletExit 类,以防止在处于未知且可能已损坏状态的数据库连接上发生进一步的操作。mysql驱动程序是这个变更最主要的目标,但是这个变更跨越了所有dbapis。

    References: #3803

  • [sql] [bug]

    “eq”和“ne”操作符不再是“关联”操作符列表的一部分,而它们仍然被认为是“交换的”。这允许类似 (x == y) == z 在SQL级别用括号维护。拉请求由约翰·帕萨罗提供。

    References: #3799

  • [sql] [bug]

    用未命名的表达式字符串化 Column 对象(在许多情况下,包括ORM错误报告)现在将字符串上下文中的名称呈现为“<name unknown>”,而不是引发编译错误。

    References: #3789

  • [sql] [bug]

    当错误地将非“可执行”的ClauseElement或非SqlAlchemy对象传递给 .execute() ;在所有情况下都会一致地引发新的异常ObjectNoteXExecutableError。

    References: #3786

  • [sql] [bug] [mysql] [postgresql]

    修复了JSON数据类型中的回归,其中不会调用JSON索引值的“文字处理器”。现在可以从jsonIndexType和jsonPathType中调用本机字符串和整数数据类型。这适用于generic、postgresql和mysql json类型,并且还依赖于 #3766 .

    References: #3765

  • [sql] [bug]

    固定错误在哪里 Index 如果这些SQL表达式包装在ORM样式中,则无法从复合SQL表达式中提取列 __clause_element__() 构建。这个bug也存在于1.0.x中,但是在1.1中更为明显,因为混合属性@expression现在返回一个包装的元素。

    References: #3763

postgresql

  • [postgresql] [bug]

    对冲突的一种调整,使“插入的主关键字”逻辑能够适应没有插入或更新且没有净变化的情况。在这种情况下,该值将显示为无,而不是在异常上失败。

    References: #3813

  • [postgresql] [bug]

    修复了新pg“on conflict”构造中的问题,其中包含“excluded”命名空间的列在语句的WHERE子句中不符合表限定。

    References: #3807

mysql

  • [mysql] [bug]

    添加了对在url查询字符串中分析mysql/connector布尔和整数参数的支持: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。

    This change is also backported to: 1.0.15

    References: #3787

  • [mysql] [bug]

    修复了“literal_binding”标志不会传播到mysql下的强制转换表达式的错误。

    References: #3766

mssql

  • [mssql] [bug]

    更改了用于获取“默认架构名称”的查询,从查询数据库主体表的查询改为使用“schema_name()”函数,因为已报告问题:以前的系统在Azure数据仓库版本上不可用。希望这最终能够在所有SQL Server版本和身份验证样式中工作。

    This change is also backported to: 1.0.16

    References: #3810

  • [mssql] [bug]

    更新了pyodbc的服务器版本信息方案,以使用SQL Server ServerProperty(),而不是依赖pyodbc.sql_dbms-ver,后者仍然不可靠,特别是在freetds中。

    This change is also backported to: 1.0.16

    References: #3814

  • [mssql] [bug]

    在导致连接池重置的断开连接异常列表中添加了错误代码20017“来自服务器的意外eof”。请示肯·罗宾斯。

    This change is also backported to: 1.0.16

    References: #3791

misc

  • [bug] [orm.declarative]

    修复了在包含额外列的联接表子类的子类中设置单个表会损坏映射表的外键集合,从而干扰关系的初始化的错误。

    This change is also backported to: 1.0.16

    References: #3797

1.1.0b3

Released: July 26, 2016

orm

sql

  • [sql] [bug]

    修正了在封闭语句(通常是select)中作为CTE声明的update/insert/delete的新CTE功能中的错误,在这种情况下,不会为嵌入语句调用OnInsert和OnUpdate值。

    References: #3745

  • [sql] [bug]

    修复了更新/插入/删除的新CTE功能中的错误,其中匿名(例如,未传递名称) CTE 围绕语句构造将失败。

    References: #3744

postgresql

  • [postgresql] [bug]

    修正了错误 TypeDecoratorVariant PostgreSQL方言对类型的检查不够深入,无法确定是否需要呈现smallserial或bigserial而不是serial。

    This change is also backported to: 1.0.14

    References: #3739

oracle

  • [oracle] [bug]

    固定错误 Select.with_for_update.of 如果Oracle的“rownum”限制/偏移方法无法适应“of”子句中的表达式,则必须在引用子查询中表达式的最顶层声明该表达式。如果需要,表达式现在被添加到子查询中。

    This change is also backported to: 1.0.14

    References: #3741

misc

  • [feature] [ext]

    向新的sqlachemy.ext.indexable扩展添加了“default”参数。

  • [bug] [ext]

    固定错误 sqlalchemy.ext.baked 当涉及多个子查询加载程序时,由于变量作用域问题,子查询预加载程序查询的取消绑定将失败。拉请求由马克·哈恩伯格提供。

    This change is also backported to: 1.0.15

    References: #3743

  • [bug] [ext]

    sqlAlchemy.ext.indexable在作为attributeError引发时将截获indexError和keyError。

1.1.0b2

Released: July 1, 2016

sql

  • [sql] [bug]

    修复了SQL Math Negation运算符中表达式类型不再是原始表达式的数值类型的问题。这将导致类型决定结果集行为的问题。

    This change is also backported to: 1.0.14

    References: #3735

  • [sql] [bug]

    修正了 __getstate__ / __setstate__ 由于1.0系列转换为 __slots__ . 该问题可能会影响某些第三方应用程序。拉式请求,由Pieter Mulder提供。

    This change is also backported to: 1.0.14

    References: #3728

  • [sql] [bug]

    由执行的处理 Boolean 纯python和C扩展版本之间只具有整数类型的后端数据类型保持一致,因为C扩展版本将接受数据库中的任何整数值作为布尔值,而不仅仅是零和一;此外,将发送到数据库的非布尔整数值强制为零或一。而不是作为原始整数值传递。

    References: #3730

  • [sql] [bug]

    稍微回滚验证规则 Enum 允许未知字符串值通过,除非标志 validate_string=True 传递给枚举;当然,任何其他类型的对象仍然被拒绝。虽然当前的用途是允许对具有like的枚举进行比较,但这种用法的存在表明可能存在比我们预期的更多的未知字符串比较用例,这意味着可能也存在一些未知的字符串插入用例。

    References: #3725

postgresql

  • [postgresql] [bug] [ext]

    sqlalchemy.ext.compiler 扩展,如果一个已建立的构造本身没有自己的专用构造,那么该构造的现有编译方案将被删除。 __visit_name__ . 这在1.0中是罕见的,但在1.1中是罕见的。 ARRAY 子类 ARRAY 有这种行为。因此,为另一种方言(如sqlite)设置编译处理程序将呈现 ARRAY 对象不再可编译。

    References: #3732

mysql

1.1.0b1

Released: June 16, 2016

orm

engine

  • [engine] [feature]

    添加的连接池事件 ConnectionEvents.close()ConnectionEvents.detach()ConnectionEvents.close_detached() .

  • [engine] [feature]

    用于记录、异常和的绑定参数集和结果行的所有字符串格式 repr() 现在,purposes截断每个集合中非常大的标量值,包括“n个字符被截断”的表示法,类似于大型多参数集的显示本身被截断的方式。

    References: #2837

  • [engine] [feature]

    多租户架构转换 Table 对象被添加。这支持使用同一组 Table 许多模式中的对象,例如每个用户的模式。新的执行选项 Connection.execution_options.schema_translate_map 添加。

    References: #2685

  • [engine] [feature]

    向引擎添加了一个新的入口点系统,允许在URL的查询字符串中声明“插件”。可以编写自定义插件,这些插件将有机会预先更改和/或使用引擎的URL和关键字参数,然后在引擎创建时将为引擎本身提供额外的修改或事件注册。插件被编写为 CreateEnginePlugin ;有关详细信息,请参见该类。

    References: #3536

sql

schema

  • [schema] [enhancement]

    传递到的默认生成函数 Column 对象现在通过“update_wrapper”运行,如果传递了一个可调用的非函数,则通过一个等效函数运行,这样自省工具就保留了被包装函数的名称和docstring。拉请求门控hsum。

postgresql

mysql

sqlite

  • [sqlite] [feature]

    sqlite方言现在反映在外键约束中的更新和删除短语上。拉请求由Michal Petrucha提供。

  • [sqlite] [feature]

    sqlite方言现在反映了主键约束的名称。拉车请求,黛安娜·克拉克。

    References: #3629

  • [sqlite] [change]

    为的sqlite方言添加了支持 Inspector.get_schema_names() 使用sqlite的方法;拉请求由brian van klaveren提供。还修复了对使用模式创建索引的支持,以及对模式绑定表中外键约束的反射。

  • [sqlite] [bug]

    当检测到sqlite版本3.7.16或更高版本时,将取消sqlite上右侧嵌套联接的解决方案,其中它们被重写为子查询,以解决sqlite不支持此语法的问题。

    References: #3634

  • [sqlite] [bug]

    针对sqlite意外传递列名称的解决方案为 tablename.columnname 对于某些类型的查询,当检测到sqlite 3.10.0或更高版本时,将禁用查询。

    References: #3633

mssql

misc

  • [feature] [ext]

    补充 MutableSetMutableList 帮助程序类 突变跟踪 延伸。拉车请求礼遇郑云元。

    References: #3297

  • [bug] [ext]

    在混合属性或方法上指定的docstring现在在类级别上得到认可,允许它使用类似sphinx autodoc的工具。这里的机制必然涉及到一些混合属性的表达式包装,这可能会导致它们在使用内省时出现不同的外观。

    References: #3653

  • [bug] [sybase]

    不支持的Sybase方言现在引发 NotImplementedError 当试图编译包含“offset”的查询时,Sybase没有直接的“offset”特性。

    References: #2278

Previous: 1.2换热器 Next: 1换热器