SqlAlchemy 2.0 中文文档(七十)(3)https://developer.aliyun.com/article/1560939
0.3.6
发布日期:Fri Mar 23 2007
ORM
- [ORM]
SelectResults 扩展的全部特性已经合并到一个新的一组方法中,这些方法都提供“生成式”行为,其中查询被复制并返回带有附加条件的新查询。新方法包括:
- filter() - 对查询应用选择条件
- filter_by() - 对查询应用“by”风格的条件
- avg() - 返回给定列上的 avg() 函数
- join() - 加入到一个属性(或跨越属性列表)
- outerjoin() - 类似于 join(),但使用 LEFT OUTER JOIN
- limit()/offset() - 应用基于范围的 LIMIT/OFFSET 访问,该访问应用 limit/offset:session.query(Foo)[3:5]
- distinct() - 应用 DISTINCT
- list() - 评估条件并返回结果
- 对于 Query 的 API 没有进行不兼容的更改,也没有弃用任何方法。现有方法如 select()、select_by()、get()、get_by() 等一次执行查询并返回结果,与以往一样。join_to()/join_via() 仍然存在,尽管生成式 join()/outerjoin() 方法更容易使用。
- [ORM]
使用 instances() 与多个映射器的返回值现在返回所请求的映射器列表的笛卡尔积,表示为元组列表。这对应于文档化的行为。为了使实例正确匹配,当使用此功能时,“唯一化”被禁用。 - [ORM]
Query 具有 add_entity() 和 add_column() 生成方法。这些方法将给定的映射器/类或 ColumnElement 在编译时添加到查询中,并将它们应用于 instances() 方法。用户负责构建合理的连接条件(否则可能会得到完全的笛卡尔积)。结果集是元组的列表,不唯一。 - [orm]
也可以将字符串和列发送到 instances() 的 *args 中,这些精确的结果列将成为结果元组的一部分。 - [orm]
可以将完整的 select() 构造传递给 query.select()(这已经可以工作了),但也可以使用 query.selectfirst()、query.selectone(),它们将按原样使用(即不会编译查询)。类似地,结果会被发送到 instances()。 - [orm]
对于由除了急加载器本身之外的其他内容放置在选择语句中的“order by”子句,急加载器不会“别名化”它们,以修复可能导致重复列的问题,如示例中所示。然而,这意味着你必须更加注意在 Query.select() 的“order by”中放置的列,你必须显式地在你的条件中命名它们(即,你不能依赖于急加载器为你添加它们)
参考:#495 - [orm]
在 Session 中添加了一个方便的多用途“identity_key()”方法,允许为主键值、实例和行生成标识键,由 Daniel Miller 提供 - [orm]
即使在操作发生在“反向引用”方的情况下,也将正确处理多对多表
参考:#249 - [orm]
添加了“refresh-expire”级联。允许 refresh() 和 expire() 调用沿关系传播。
参考:#492 - [orm]
对多态关系进行了更多修复,包括在多对一关系到多态映射器上生成正确的延迟子句。还修复了“direction”的检测,更具体地针对属于多态联合的列和不属于多态联合的列。
参考:#493 - [orm]
使用“viewonly=True”时对关系计算进行了一些修复,以将其他表引入到连接条件中,这些表不是关系的父/子映射的父级。 - [orm]
修复了循环引用关系中的刷新问题,其中包含对循环链之外的其他实例的引用,当循环中的一些对象实际上不是刷新的一部分时。 - [orm]
对“使用集合 B 刷新对象 A,但将 C 放入集合中”错误条件进行了严格检查 - 即使 C 是 B 的子类,除非 B 的映射器以多态方式加载。否则,集合稍后将加载一个应该是“C”的“B”(因为它不是多态的),这会在双向关系中出现问题(即 C 有它的 A,但 A 的反向引用将懒加载为类型“B”的不同实例)。这个检查将会影响一些这样做而没有问题的人,因此错误消息还将记录一个标志“enable_typechecks=False”以禁用此检查。但请注意,特别是在没有此检查的情况下,双向关系会变得脆弱。
参考:#500
sql
- [sql]
bindparam()名称现在是可重复的!在单个语句中指定两个不同的 bindparam()具有相同的名称,键将被共享。适当的位置/命名参数在编译时转换。对于“别名”具有冲突名称的绑定参数的旧行为,指定“unique=True” - 此选项仍然在所有自动生成的(基于值的)绑定参数内部使用。 - [sql]
对绑定参数作为列子句的绑定参数或文字列的支持稍微改进,例如通过 bindparam()或 literal(),即 select([literal(‘foo’)]) - [sql]
MetaData 可以通过构造函数的“url”或“engine”参数,或使用 connect()方法绑定到引擎。BoundMetaData 与 MetaData 相同,只是需要 engine_or_url 参数。DynamicMetaData 相同,并默认提供线程本地连接。 - [sql]
exists()现在可以作为独立的可选择项使用,不仅仅在 WHERE 子句中,例如 exists([columns], criterion).select() - [sql]
相关子查询可以在 ORDER BY、GROUP BY 中工作 - [sql]
修复了使用显式连接执行函数的问题,即 conn.execute(func.dosomething()) - [sql]
在 select()上使用 use_labels 标志不会自动为文字列元素创建标签,因为我们无法对文本做出任何假设。要为文字列创建标签,可以说“somecol AS somelabel”,或使用 literal_column(“somecol”).label(“somelabel”) - [sql]
当将文字列列“代理”到其可选择的列集合中时,不会对文字列进行引用(is_literal 标志被传播)。文字列通过 literal_column(“somestring”)指定。 - [sql]
在 Join.select()中添加了“fold_equivalents”布尔参数,该参数根据连接条件删除结果列子句中已知等效的“重复”列。在构建 Postgres 抱怨存在重复列名的连接子查询时,这非常有用。 - [sql]
修复了 ForeignKeyConstraint 上的 use_alter 标志
参考:#503 - [sql]
修复了在 topological.py 中使用仅限于 2.4 的“reversed”的问题
参考:#506 - [sql]
对于黑客,重构了 ClauseElement 和 SchemaItem 的“visitor”系统,以便项目的遍历由 ClauseVisitor 本身控制,使用方法 visitor.traverse(item)。accept_visitor()方法仍然可以直接调用,但不会遍历子项目。ClauseElement/SchemaItem 现在有一个可配置的 get_children()方法,用于返回每个父对象的子元素集合。这允许项目的完整遍历清晰明了(以及可记录),并且有一种限制遍历的简单方法(只需传递标志,这些标志由适当的 get_children()方法捕获)。
参考:#501 - [sql]
当设置为零时,case 语句的“else_”参数现在正常工作。
扩展
- [extensions]
SelectResults 上的 options()方法现在像其他 SelectResults 方法一样实现了“生成”。但是你现在无论如何都会只使用 Query。
参考:#472 - [extensions]
通过 assignmapper 添加了 query()方法。这有助于导航到 Query 上的所有新的生成方法。
mysql
- [mysql]
为 MSString 添加了一个通用的**kwargs,以帮助反射模糊类型(例如 MS 4.0 中的“varchar() binary”) - [mysql]
添加了明确的 MSTimeStamp 类型,当使用 types.TIMESTAMP 时生效。
oracle
- [oracle]
为任意大小的输入使二进制工作!cx_oracle 工作正常,这是我的错,因为 BINARY 被传递而不是 BLOB 用于 setinputsizes(而且单元测试甚至没有设置输入大小)。 - [oracle]
还修复了 CLOB 读/写在一个单独的变更集上。 - [oracle]
auto_setinputsizes 默认为 True 用于 Oracle,修复了它错误地传播错误类型的情况。
杂项
- [ms-sql]
在 DATE 列类型上删除了秒输入(可能应该完全删除时间)
应该完全删除时间) - [ms-sql]
浮点字段中的空值不再引发错误 - [ms-sql]
带有 OFFSET 的 LIMIT 现在会引发错误(MS-SQL 不支持 OFFSET) - [ms-sql]
添加了一种使用 MSSQL 类型 VARCHAR(max)而不是 TEXT 用于大型无大小字���串字段的方法。使用新的“text_as_varchar”来打开它。
参考:#509 - [ms-sql]
没有 LIMIT 的 ORDER BY 子句现在在子查询中被剥离,因为 MS-SQL 禁止此用法 - [ms-sql]
清理模块导入代码;可指定的 DB-API 模块;模块偏好的更明确排序。
参考:#480
orm
- [orm]
SelectResults 扩展的完整功能集已合并到可用于 Query 的一组新方法中。这些方法都提供“生成”行为,其中查询被复制并返回一个添加了额外条件的新查询。新方法包括:
- filter() - 将选择条件应用于查询
- filter_by() - 将“by”样式的条件应用于查询
- avg() - 返回给定列上的 avg()函数
- join() - 加入到属性(或跨��性列表)
- outerjoin() - 类似于 join(),但使用 LEFT OUTER JOIN
- limit()/offset() - 应用基于范围的 LIMIT/OFFSET 访问,该访问应用 limit/offset:session.query(Foo)[3:5]
- distinct() - 应用 DISTINCT
- list() - 评估条件并返回结果
- Query 的 API 没有进行不兼容的更改,也没有废弃任何方法。现有方法如 select()、select_by()、get()、get_by()都会立即执行查询并返回结果,就像以前一样。join_to()/join_via()仍然存在,尽管生成的 join()/outerjoin()方法更容易使用。
- [orm]
对于与 instances()一起使用的多个 mapper 的返回值现在返回请求的 mapper 列表的笛卡尔积,表示为元组的列表。这与文档中的行为相对应。为了正确匹配实例,当使用此功能时,“唯一化”被禁用。 - [orm]
Query 具有 add_entity()和 add_column()生成方法。这些方法将在编译时将给定的 mapper/class 或 ColumnElement 添加到查询中,并将它们应用于 instances()方法。用户负责构建合理的连接条件(否则可能会得到完整的笛卡尔积)。结果集是元组的列表,不唯一。 - [orm]
字符串和列也可以发送到 instances()的*args 中,其中这些确切的结果列将成为结果元组的一部分。 - [orm]
可以将完整的 select()构造传递给 query.select()(这在任何情况下都有效),但也可以使用 query.selectfirst()、query.selectone(),它们将按原样使用(即不会编译查询)。与将结果发送到 instances()类似。 - [orm]
急加载不会“别名化”由急加载器本身放置在 select 语句中的“order by”子句,以修复可能出现的重复列的问题。但是,这意味着您必须更加小心地处理放置在 Query.select()的“order by”中的列,您必须明确地在您的条件中命名它们(即您不能依赖于急加载器为您添加它们)
参考:#495 - [orm]
为 Session 添加了一个方便的多用途“identity_key()”方法,允许为主键值、实例和行生成身份键,感谢 Daniel Miller - [orm]
多对多表将被正确处理,即使在操作发生在操作的“backref”一侧时也是如此
参考:#249 - [orm]
添加了“refresh-expire”级联。允许 refresh()和 expire()调用沿关系传播。
参考:#492 - [orm]
对多态关系进行了更多修复,涉及到对多对一关系到多态 mapper 的正确惰性子句生成。还修复了“方向”的检测,更具体地针对属于多态联合的列与不属于多态联合的列的定位。
参考:#493 - [orm]
在使用“viewonly=True”时,修复了关系计算的一些问题,以将其他表引入到连接条件中,这些表不是关系的父/子映射的一部分 - [orm]
修复了包含对循环引用关系的刷新的问题,当循环链中的某些对象实际上不是刷新的一部分时 - [orm]
对“将对象 A 与 B 的集合刷新,但将 C 放入集合中”错误条件进行了积极检查 - 即使 C 是 B 的子类,除非 B 的映射器以多态方式加载。否则,集合稍后将加载一个“B”,而应该是一个“C”(因为它不是多态的),这会破坏双向关系(即 C 有其 A,但 A 的反向引用将懒加载为类型“B”的不同实例)。这个检查将会影响一些没有问题的人,因此错误消息还将记录一个标志“enable_typechecks=False”来禁用此检查。但请注意,特别是在没有此检查的情况下,双向关系变得脆弱。
参考:#500
sql
- [sql]
bindparam()现在可以重复使用!在单个语句中指定两个不同的 bindparam()具有相同的名称,键将被共享。适当的位置/命名参数在编译时转换。对于具有冲突名称的绑定参数进行“别名”处理的旧行为,指定“unique=True” - 此选项仍然在所有自动生成的(基于值的)绑定参数的内部使用。 - [sql]
对绑定参数作为列子句提供了更好的支持,可以通过 bindparam()或 literal()来实现,例如 select([literal(‘foo’)]) - [sql]
MetaData 可以通过构造函数的“url”或“engine”参数绑定到引擎,也可以使用 connect()方法。BoundMetaData 与 MetaData 相同,只是 engine_or_url 参数是必需的。DynamicMetaData 相同,并默认提供线程本地连接。 - [sql]
exists()现在可以作为一个独立的可选择项使用,不仅仅在 WHERE 子句中,例如 exists([columns], criterion).select() - [sql]
相关子查询可以在 ORDER BY、GROUP BY 中工作 - [sql]
修复了使用显式连接执行函数的问题,例如 conn.execute(func.dosomething()) - [sql]
在 select()上使用 use_labels 标志不会为文字列元素自动创建标签,因为我们无法对文本做出任何假设。要为文字列创建标签,可以说“somecol AS somelabel”,或使用 literal_column(“somecol”).label(“somelabel”) - [sql]
当将文字列代理到其可选择的列集合中时,文字列不会被引用(is_literal 标志被传播)。文字列通过 literal_column(“somestring”)指定。 - [sql]
在 Join.select() 中添加了一个“fold_equivalents”布尔参数,它根据连接条件从结果列子句中移除‘重复’列,这些列基于连接条件被认为是等效的。在构造 Postgres 抱怨有重复列名的子查询时,这非常有用。 - [sql]
修复了 ForeignKeyConstraint 上的 use_alter 标志
参考:#503 - [sql]
在 topological.py 中修复了仅限于 2.4 的“reversed”的使用。
参考:#506 - [sql]
重构了 ClauseElement 和 SchemaItem 的“访问者”系统,使得项的遍历由 ClauseVisitor 本身控制,使用方法 visitor.traverse(item)。accept_visitor() 方法仍然可以直接调用,但不会遍历子项。ClauseElement/SchemaItem 现在有一个可配置的 get_children() 方法,用于返回每个父对象的子元素集合。这允许项的完整遍历清晰明了(以及可记录),并且有一种简单的限制遍历的方法(只需传递标志,这些标志由适当的 get_children() 方法拾取)。
参考:#501 - [sql]
当 else_ 参数设置为零时,case 语句现在正常工作。
extensions
- [extensions]
SelectResults 上的 options() 方法现在像其他 SelectResults 方法一样实现了“生成”。但是现在你只会使用 Query。
参考:#472 - [extensions]
query() 方法由 assignmapper 添加。这有助于浏览 Query 上的所有新生成方法。
mysql
- [mysql]
在 MSString 上添加了一个捕获所有 **kwargs,以帮助反射模糊类型(例如 MS 4.0 中的“varchar() binary”) - [mysql]
添加了显式的 MSTimeStamp 类型,当使用 types.TIMESTAMP 时生效。
oracle
- [oracle]
让二进制对任何大小的输入都有效!cx_oracle 正常工作,这是我的错,因为传递的是 BINARY 而不是 BLOB 以设置输入大小(而且单元测试甚至没有设置输入大小)。 - [oracle]
还在另一个变更集中修复了 CLOB 读写问题。 - [oracle]
对于 Oracle,auto_setinputsizes 默认为 True,修复了不正确传播坏类型的情况。
杂项
- [ms-sql]
在 DATE 列类型上删除了秒输入(可能是为了黑客)。
应该完全移除时间) - [ms-sql]
浮点字段中的空值不再引发错误 - [ms-sql]
使用 OFFSET 的 LIMIT 现在会引发错误(MS-SQL 不支持 OFFSET) - [ms-sql]
添加了一种使用 MSSQL 类型 VARCHAR(max) 而不是 TEXT 用于大型未定大小的字符串字段的方法。使用新的“text_as_varchar”来打开它。
参考:#509 - [ms-sql]
没有 LIMIT 的 ORDER BY 子句现在在子查询中被剥离,因为 MS-SQL 禁止此用法 - [ms-sql]
清理模块导入代码;可指定的 DB-API 模块;模块偏好的更明确排序。
参考:#480
0.3.5
发布日期:Thu Feb 22 2007
orm
- [orm] [bugs]
另一个关系计算的重构。允许更准确的 ORM 行为与映射器之间的关系,特别是多态映射器,以及它们与 Query、SelectResults 的使用。票据包括,。
参考:#439, #441, #448 - [orm] [bugs]
删除了在类上指定自定义集合的已弃用方法;现在必须使用“collection_class”选项。旧方法开始在人们使用 assign_mapper() 时产生冲突,现在修补���一个“options”方法,与一个名为“options”的关系一起使用。 (关系优先于猴子补丁的 assign_mapper 方法)。 - [orm] [bugs]
extension() 查询选项传播到 Mapper._instance() 方法,以便调用所有与加载相关的方法
参考:#454 - [orm] [bugs]
对继承映射器的急切关系如果关系没有返回任何行不会失败。 - [orm] [bugs]
修复了多个后代类上急切关系加载的错误
参考:#486 - [orm] [bugs]
修复了非常大的拓扑排序问题,感谢 ants.aasma at gmail
参考:#423 - [orm] [bugs]
急切加载在检测“自引用”关系方面稍微更严格,特别是在多态映射器之间。这导致“急切降级”为延迟加载。 - [orm] [bugs]
改进了对嵌入到查询.select() 的“where”条件的复杂查询的支持
参考:#449 - [orm] [bugs]
映射器选项如 eagerload()、lazyload()、deferred(),将适用于“synonym()”关系
参考:#485 - [orm] [bugs]
修复了级联操作错误地将已删除的集合项包含在级联中的错误
参考:#445 - [orm] [bugs]
修复了一个关系删除错误,当一个一对多的子项在单个工作单元中移动到新的父项时
参考:#478 - [orm] [bugs]
修复了关系删除错误,其中具有单个列作为子项的 PK/FK 的父项/子项在手动删除或使用“delete-orphan”而不是“delete”级联时会引发“清空主键”错误 - [orm] [bugs]
修复了延迟加载,以便在只设置 PK 列属性时不会错误地发生加载操作 - [orm] [enhancements]
实现了 mapper 的 foreign_keys 参数。与 primaryjoin/secondaryjoin 参数一起使用,指定/覆盖在 Table 实例上定义的外键。
参考:#385 - [orm] [增强]
contains_eager(‘foo’)自动意味着 eagerload(‘foo’) - [orm] [增强]
在 contains_eager()中添��了“alias”参数。使用它来指定在查询中用于急加载子项的别名的字符串名称或 Alias 实例。比“decorator”更容易使用 - [orm] [增强]
为映射到映射表的别名的结果集映射添加了“contains_alias()”选项 - [orm] [增强]
添加了对 py2.5“with”语句与 SessionTransaction 的支持
参考:#468
sql
- [sql]
“case_sensitive”的值现在默认为 True,不管标识符的大小写如何,除非明确设置为 False。这是因为对象可能被标记为其他内容,其中包含混合大小写,传播“case_sensitive=False”会破坏这一点。在使用标签和“fake”列对象时修复引用的其他修复 - [sql]
添加了“supports_execution()”方法到 ClauseElement,以便各种类型的子句可以表达是否适合执行…例如,您可以执行“select”,但不能执行“Table”或“Join”。 - [sql]
修复了对引擎、连接上直接文本执行 execute()的参数传递。可以处理*args 或列表实例用于位置参数,**kwargs 或字典实例用于命名参数,或列表的列表或字典用于调用 executemany() - [sql]
对 BoundMetaData 进行了小修复,接受 unicode 或字符串 URL - [sql]
修复了由 andrija at gmail 提供的命名 PrimaryKeyConstraint 生成
参考:#466 - [sql]
修复了在列上生成 CHECK 约束
参考:#464 - [sql]
修复了在 tometadata()操作中传播列和表级别的约束
扩展
- [扩展]
添加了 distinct()方法到 SelectResults。通常只在使用 count()时会有所不同。 - [扩展]
在 SelectResults 中添加了 options()方法,相当于 query.options()
参考:#472 - [扩展]
添加了可选的 table_opts 字典到 ActiveMapper,将 kw 选项发送到 Table 对象
参考:#462 - [扩展]
添加了 selectfirst()、selectfirst_by()到 assign_mapper
参考:#467
mysql
- [mysql]
修复了在旧数据库上反射可能返回“show variables like”语句的 array()类型的问题
mssql
- [mssql]
对 pyodbc 的初步支持(耶!)
参考:#419 - [mssql]
添加了对 NVARCHAR 类型的更好支持
参考:#298 - [mssql]
修复了 pymssql 上的提交逻辑问题 - [mssql]
修复了使用 schema 的 query.get() 问题
参考:#456 - [mssql]
修复了非整数关系的问题
参考:#473 - [mssql]
现在可以在运行时选择 DB-API 模块
参考:#419 - [mssql] [415] [481] [tickets:422]
现在通过了更多的单元测试 - [mssql]
与 ANSI 函数的自动单元测试兼容性更好
参考:#479 - [mssql]
对具有自动插入的隐式序列 PK 列的支持改进
参考:#415 - [mssql]
修复了 adodbapi 中空密码的问题
参考:#371 - [mssql]
修复了与 pyodbc 一起使用单元测试的问题
参考:#481 - [mssql]
修复了 db-url 查询中的 auto_identity_insert 问题 - [mssql]
在 db-url 查询参数中添加了 query_timeout。 目前仅对 pymssql 有效 - [mssql]
使用了 pymssql 0.8.0 进行了测试(现在是 LGPL)
oracle
- [oracle]
在返回“rowid”作为 ORDER BY 列或与 ROW_NUMBER OVER 一起使用时,oracle 方言会检查其应用于的可选择项,并在不适用时切换到表 PK,即对于 UNION。 检查 DISTINCT、GROUP BY(rowid 无效的其他地方)仍然是一个 TODO。 允许多态映射功能。
参考:#436 - [oracle]
非主键列上的序列现在在插入时会正确触发 - [oracle]
添加了对 PrefetchingResultProxy 的支持,以在已知存在时预提取 LOB 列,修复
参考:#435 - [oracle]
实现了基于同义词的表反射,包括跨数据库链接的反射
参考:#379 - [oracle]
当由于某些权限错误而无法反映相关表时,会发出日志警告
参考:#363
杂项
- [postgres]
更好地反映了交替模式表的序列
参考:#442 - [postgres]
非主键列上的序列现在在插入时会正确触发 - [postgres]
添加了 PGInterval 类型,PGInet 类型
参考:#444, #460
orm
- [orm] [bugs]
对关系计算进行了进一步的重构。 允许更准确的 ORM 行为,包括来自/到/之间的映射器,特别是多态映射器,以及它们与 Query、SelectResults 的使用。 票据包括,。
参考:#439, #441, #448 - [orm] [bugs]
移除了在类上指定自定义集合的已弃用方法;现在必须使用“collection_class”选项。旧方法开始在人们使用 assign_mapper() 时产生冲突,现在它会修补一个“options”方法,与一个名为“options”的关系一起使用(关系优先于 monkeypatched assign_mapper 方法)。 - [orm] [bugs]
extension() 查询选项传播到 Mapper._instance() 方法,以便调用所有与加载相关的方法
参考:#454 - [orm] [bugs]
如果关系到一个继承的映射器,即使关系没有返回任何行也不会失败。 - [orm] [bugs]
修复了多个后代类上急切关系加载的 bug
参考:#486 - [orm] [bugs]
修复了非常大的拓扑排序的 bug,感谢 ants.aasma@gmail
参考:#423 - [orm] [bugs]
eager loading 对于检测“自引用”关系稍微更加严格,特别是在多态映射器之间。这会导致“急切降级”到懒加载。 - [orm] [bugs]
改进了嵌入到查询.select() 的“where”条件中的复杂查询的支持
参考:#449 - [orm] [bugs]
mapper 选项如 eagerload()、lazyload()、deferred(),将适用于“synonym()”关系
参考:#485 - [orm] [bugs]
修复了级联操作错误地将已删除的集合项包含在级联中的 bug
参考:#445 - [orm] [bugs]
在单个工作单元中将一对多子项移动到新父项时,修复了关系删除错误
参考:#478 - [orm] [bugs]
修复了关系删除错误,其中父/子项的主键/外键只有一个列时,如果手动删除或使用“delete”级联而没有使用“delete-orphan”,则会引发“清空主键”错误 - [orm] [bugs]
修复了延迟加载,以便在只设置了 PK 列属性时不会错误地发生加载操作 - [orm] [enhancements]
实现了 mapper 的 foreign_keys 参数。与 primaryjoin/secondaryjoin 参数一起使用,用于指定/覆盖在 Table 实例上定义的外键。
参考:#385 - [orm] [enhancements]
contains_eager(‘foo’) 自动意味着 eagerload(‘foo’) - [orm] [enhancements]
为 contains_eager() 添加了“alias”参数。使用它来指定查询中用于急切加载子项的别名的字符串名称或 Alias 实例。比“decorator”更容易使用 - [orm] [enhancements]
为映射到映射表的别名的结果集映射添加了“contains_alias()”选项 - [orm] [enhancements]
添加了对 py2.5“with”语句与 SessionTransaction 的支持
参考:#468
sql
- [sql]
“case_sensitive”的值现在默认为 True,不管标识符的大小写如何,除非明确设置为 False。这是因为对象可能被标记为其他内容,其中包含混合大小写,传播“case_sensitive=False”会破坏这一点。在使用标签和“fake”列对象时修复引用的其他修复 - [sql]
在 ClauseElement 中添加了一个“supports_execution()”方法,以便各种类型的子句可以表达是否适合执行…例如,您可以执行“select”,但不能执行“Table”或“Join”。 - [sql]
修复了对引擎、连接上直接文本执行 execute()的参数传递,可以处理*args 或用于位置参数的列表实例,**kwargs 或用于命名参数的字典实例,或用于调用 executemany()的列表列表或字典 - [sql]
对 BoundMetaData 进行了小修复,以接受 unicode 或字符串 URL - [sql]
修复了由 andrija at gmail 提供的命名 PrimaryKeyConstraint 生成
参考:#466 - [sql]
修复了在列上生成 CHECK 约束
参考:#464 - [sql]
修复了 tometadata()操作以在列和表级别传播 Constraints
extensions
- [extensions]
在 SelectResults 中添加了 distinct()方法。通常只在使用 count()时才会有所不同。 - [extensions]
在 SelectResults 中添加了 options()方法,相当于 query.options()
参考:#472 - [extensions]
在 ActiveMapper 中添加了可选的 table_opts 字典,将 kw 选项发送到 Table 对象
参考:#462 - [extensions]
在 assign_mapper 中添加了 selectfirst()、selectfirst_by()
参考:#467
mysql
- [mysql]
修复了在旧 DB 上可能返回“show variables like”语句的 array()类型的反射
mssql
- [mssql]
对 pyodbc 进行了初步支持(耶!)
参考:#419 - [mssql]
添加了对 NVARCHAR 类型的更好支持
参考:#298 - [mssql]
修复了 pymssql 上的提交逻辑 - [mssql]
修复了带有模式的 query.get()
参考:#456 - [mssql]
修复了非整数关系
参考:#473 - [mssql]
现在可以在运行时选择 DB-API 模块
参考:#419 - [mssql] [415] [481] [tickets:422]
现在通过了更多的单元测试 - [mssql]
与 ANSI 函数更好的 unittest 兼容性
参考:#479 - [mssql]
改进了对具有自动插入的隐式序列 PK 列的支持
参考: #415 - [mssql]
修复了 adodbapi 中的空密码
参考: #371 - [mssql]
修复以使单元测试与 pyodbc 正常工作
参考: #481 - [mssql]
修复了 db-url 查询上的 auto_identity_insert - [mssql]
在 db-url 查询参数中添加了 query_timeout。目前仅对 pymssql 有效 - [mssql]
使用 pymssql 0.8.0 进行测试(现在是 LGPL)
oracle
- [oracle]
当返回 “rowid” 作为 ORDER BY 列或与 ROW_NUMBER OVER 一起使用时,oracle 方言会检查其被应用的可选择对象,并在不适用时切换到表 PK,即对于 UNION。检查 DISTINCT、GROUP BY(其他位置无效的 rowid)仍然是一个 TODO。允许多态映射功能。
参考: #436 - [oracle]
在非主键列上的序列将会正确地在插入时触发 - [oracle]
添加了 PrefetchingResultProxy 支持以在已知存在时预取 LOB 列,修复
参考: #435 - [oracle]
根据同义词反射表的实现,包括跨数据库链接的情况
参考: #379 - [oracle]
在由于某些权限错误而无法反射相关表时,记录警告
参考: #363
杂项
- [postgres]
更好地反射了备用模式表的序列
参考: #442 - [postgres]
在非主键列上的序列将会正确地在插入时触发 - [postgres]
添加了 PGInterval 类型,PGInet 类型
参考: #444, #460
SqlAlchemy 2.0 中文文档(七十)(5)https://developer.aliyun.com/article/1560941