SqlAlchemy 2.0 中文文档(七十)(4)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: SqlAlchemy 2.0 中文文档(七十)

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(七十)(1)
SqlAlchemy 2.0 中文文档(七十)
11 1
|
9天前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(七十)(3)
SqlAlchemy 2.0 中文文档(七十)
14 1
|
9天前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(七十)(5)
SqlAlchemy 2.0 中文文档(七十)
12 1
|
9天前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(七十二)(5)
SqlAlchemy 2.0 中文文档(七十二)
15 1
|
10天前
|
SQL API 数据库
SqlAlchemy 2.0 中文文档(八十)(5)
SqlAlchemy 2.0 中文文档(八十)
13 0
|
10天前
|
SQL 缓存 API
SqlAlchemy 2.0 中文文档(八十)(4)
SqlAlchemy 2.0 中文文档(八十)
13 0
|
10天前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(八十)(1)
SqlAlchemy 2.0 中文文档(八十)
13 1
|
6天前
|
SQL 数据库 数据安全/隐私保护
SqlAlchemy 2.0 中文文档(五十)(3)
SqlAlchemy 2.0 中文文档(五十)
9 0
|
9天前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(七十)(2)
SqlAlchemy 2.0 中文文档(七十)
11 0
|
10天前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(六十)(5)
SqlAlchemy 2.0 中文文档(六十)
6 0