SqlAlchemy 2.0 中文文档(六十二)(1)

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: SqlAlchemy 2.0 中文文档(六十二)


原文:docs.sqlalchemy.org/en/20/contents.html

1.1 更改日志

原文:docs.sqlalchemy.org/en/20/changelog/changelog_11.html

1.1.18

发布日期:2018 年 3 月 6 日

postgresql

  • [postgresql] [bug] [py3k]
    修复了在 PostgreSQL COLLATE / ARRAY 调整中首次引入的问题,在 Python 3.7 正则表达式的新行为导致修复失败的情况。首次引入:#4006
    参考:#4208

mysql

  • [mysql] [bug]
    MySQL 方言现在显式地使用 SELECT @@version 查询服务器版本以确保我们得到正确的版本信息。代理服务器(如 MaxScale)会干扰传递给 DBAPI 的连接.server_version 值,因此此信息现在不再可靠。
    参考:#4205

1.1.17

发布日期:2018 年 2 月 22 日

  • [bug] [ext]
    修复了在 1.2.3 和 1.1.16 中关于关联代理对象的回归,修订了计算关联代理的“拥有类”的方法,使其在计算关联代理的“拥有类”时默认选择当前类,如果代理对象与映射类没有直接关联,例如与混入类相似的情况。
    参考:#4185

1.1.16

发布日期:2018 年 2 月 16 日

orm

  • [orm] [bug]
    修复了 post_update 功能中的问题,即当父对象已被删除但相关对象未被删除时,会发出 UPDATE。此问题已存在很长时间,但自 1.2 版本以来,为 post_update 断言行匹配,因此会引发错误。
    参考:#4187
  • [orm] [bug]
    由于修复问题 #4116 而引起的回归,影响到版本 1.2.2 以及 1.1.15,导致一些声明性混合/继承情况下的“拥有类”计算错误,以及如果关联代理从未映射的类中访问,则将关联代理错误地分配给了 NoneType 类。现在,“找到所有者”的逻辑已被一种深度搜索的方法取代,该方法通过搜索分配给类或子类的完整映射器层次结构来确定正确(我们希望如此)的匹配;如果未找到匹配项,则不会分配所有者。如果对未映射实例使用代理,则现在会引发异常。
    参考:#4185
  • [orm] [bug]
    修复了一个错误,即在回滚嵌套事务或子事务期间对已发生主键变异的对象进行删除时,会导致该对象未能正确从会话中移除,从而在使用会话时引发后续问题。
    参考:#4151

sql

  • [sql] [bug]
    nullsfirst()nullslast()作为sqlalchemy.sqlalchemy.sql.命名空间中的顶级导入添加。感谢 Lele Gaifax 的拉取请求。
  • [sql] [bug]
    修复了在Insert.values()中使用“multi-values”格式与Column对象作为键而不是字符串时会失败的 bug。感谢 Aubrey Stark-Toller 的拉取请求。
    参考:#4162

postgresql

  • [postgresql] [bug]
    将“SSL SYSCALL error: Operation timed out”添加到触发 psycopg2 驱动程序“断开连接”场景的消息列表中。感谢 André Cruz 的拉取请求。
  • [postgresql] [bug]
    将“TRUNCATE”添加到 PostgreSQL 方言接受的关键字列表中,作为“autocommit”触发关键字。感谢 Jacob Hayes 的拉取请求。

mysql

  • [mysql] [bug]
    修复了 MySQL 的“concat”和“match”运算符无法将 kwargs 传播到左右表达式,导致编译器选项(如“literal_binds”)失败的错误。
    参考:#4136

misc

  • [bug] [pool]
    修复了一个相当严重的连接池 bug,即在用户定义的DisconnectionError或由于 1.2 版本发布的“pre_ping”功能导致刷新后获取的连接,如果连接由 weakref 清理(例如前端对象被垃圾回收)返回到池中,则不会正确重置连接;弱引用仍将指向先前失效的 DBAPI 连接,而该连接将错误地调用重置操作。这将导致日志中的堆栈跟踪和连接被检入池而未被重置,这可能导致锁定问题。
    参考:#4184

1.1.15

发布日期:2017 年 11 月 3 日

orm

  • [orm] [bug] [ext]
    修复了当关联代理首先以AliasedClass作为父类调用时,会错误地将自身链接到AliasedClass对象的错误,导致后续使用时出现错误的问题。
    参考:#4116
  • [orm] [bug]
    修复了一个问题,在继承层次结构中的兄弟类中,ORM 关系会警告存在冲突的同步目标(例如,两个关系都将写入同一列),但实际上这两个关系在写入时永远不会发生冲突。
    参考:#4078
  • [orm] [bug]
    修复了一个问题,其中针对单表继承实体使用的相关选择在外部查询中无法正确呈现,因为不适当地调整了单继承鉴别器条件,错误地将条件重新应用到外部查询中。
    参考:#4103

orm 声明式

  • [orm] [声明式] [bug]
    修复了一个问题,在刷新操作期间会引用描述符(即基于AbstractConcreteBase的其他地方的映射列或关系),导致错误,因为该属性未映射为映射器属性。如果类未在其映射器中包含“concrete=True”,那么其他属性(例如由AbstractConcreteBase添加的“type”列)可能会出现类似的问题,但此处的检查也应该防止该场景引发问题。
    参考:#4124

sql

  • [sql] [bug]
    修复了一个问题,其中ColumnDefault__repr__如果参数是元组,则会失败。 感谢 Nicolas Caniart 的拉取请求。
    参考:#4126
  • [sql] [bug]
    修复了一个问题,其中最近添加的ColumnOperators.any_()ColumnOperators.all_()方法在作为方法调用时无法正常工作,而不是使用独立的函数any_()all_()。此外,为这些相对不直观的 SQL 操作添加了文档示例。
    参考:#4093

postgresql

  • [postgresql] [bug]
    进一步修复了与 COLLATE 结合使用的ARRAY类的问题,因为在#4006中进行的修复未能适应多维数组。
    参考:#4006
  • [postgresql] [bug]
    修复了array_agg函数中的错误,其中传递一个已经是ARRAY类型的参数,例如 PostgreSQL 中的array构造,会产生ValueError,因为函数尝试嵌套数组。
    参考:#4107
  • [postgresql] [bug]
    修复了 PostgreSQL 中Insert.on_conflict_do_update()中的错误,该错误会阻止插入语句被用作 CTE,例如通过Insert.cte()在另一个语句中使用。
    参考:#4074

mysql

  • [mysql] [bug]
    当检测到 MariaDB 10.2.8 或更早版本的 10.2 系列时,会发出警告,因为这些版本中的 CHECK 约束存在重大问题,这些问题在 10.2.9 中已解决。
    请注意,此更改日志消息未随 SQLAlchemy 1.2.0b3 一起发布,而是事后添加的。
    参考:#4097
  • [mysql] [bug]
    MySQL 5.7.20 现在会警告使用@tx_isolation 变量;现在执行版本检查并使用@transaction_isolation 来防止此警告。
    参考:#4120
  • [mysql] [bug]
    修复了在 MariaDB 10.2 系列中 CURRENT_TIMESTAMP 由于语法更改而无法正确反映的问题,其中该函数现在表示为current_timestamp()
    参考:#4096
  • [mysql] [bug]
    MariaDB 10.2 现在支持 CHECK 约束(警告:由于在#4097中指出的上游问题,请使用 10.2.9 或更高版本)。反射现在在存在 CHECK 约束时考虑这些 CHECK 约束,当它们出现在SHOW CREATE TABLE输出中时。
    参考:#4098

sqlite

  • [sqlite] [bug]
    修复了 SQLite 中 CHECK 约束反射失败的错误,如果引用的表在远程模式下,例如在 SQLite 中由 ATTACH 引用的远程数据库。
    参考:#4099

mssql

  • [mssql] [bug]
    为 SQL Server 的 PyODBC 方言添加了完整范围的“连接关闭”异常代码,包括‘08S01’、‘01002’、‘08003’、‘08007’、‘08S02’、‘08001’、‘HYT00’、‘HY010’。以前只覆盖了‘08S01’。
    参考:#4095

1.1.14

发布日期:2017 年 9 月 5 日

orm

  • [orm] [bug]
    修复了Session.merge()中的 bug,与#4030类似,其中对于身份映射中的目标对象的内部检查,如果在合并过程实际检索对象之前立即被垃圾回收,可能会导致错误。
    参考:#4069
  • [orm] [bug]
    修复了一个 bug,当undefer_group()选项扩展自使用连接式急加载加载的关系时,该选项将不被识别。此外,由于该 bug 导致执行了过多的工作,Python 函数调用次数在结果集列的初始计算中也提高了 20%,这与#3915的连接急加载改进相辅相成。
    参考:#4048
  • [orm] [bug]
    修复了 ORM 身份映射中的竞争条件,导致在加载操作期间不适当地删除对象,从而导致重复对象标识的发生,特别是在涉及对象去重的连接急加载下。该问题特定于弱引用的垃圾回收,并且仅在 PyPy 解释器下观察到。
    参考:#4068
  • [orm] [bug]
    修复了Session.merge()中的 bug,其中集合中的对象的主键属性设置为None,对于通常是自动递增的键,会被视为内部去重过程中的数据库持久化键的一部分,导致实际上只有一个对象被插入到数据库中。
    参考:#4056
  • [orm] [bug]
    当对不是MapperProperty的属性(如关联代理)使用synonym()时,会引发InvalidRequestError。以前,尝试定位不存在的属性会导致递归溢出。
    参考:#4067

sql

  • [sql] [bug]
    修改了窗口函数的范围规范,允许在范围中使用两个相同的 PRECEDING 或 FOLLOWING 关键字,通过允许范围的左侧为正数,右侧为负数,例如(1, 3)是“1 FOLLOWING AND 3 FOLLOWING”。
    参考:#4053

1.1.13

发布日期:2017 年 8 月 3 日

oracle

  • [oracle] [性能] [bug] [py2k]
    由于修复#3937导致的性能回归,其中 cx_Oracle 自版本 5.3 起从其命名空间中删除了.UNICODE符号,这被解释为  cx_Oracle 的“WITH_UNICODE”模式被无条件打开,这会在 SQLAlchemy 端调用函数,无条件地将所有字符串转换为  unicode 并导致性能影响。实际上,根据 cx_Oracle 的作者,自 5.1  起,“WITH_UNICODE”模式已完全删除,因此不再需要昂贵的 unicode 转换函数,如果在 Python 2 下检测到  cx_Oracle 5.1 或更高版本,则会禁用它们。还恢复了在#3937中删除的针对“WITH_UNICODE”模式的警告。
    此更改也回溯到:1.0.19
    参考:#4035

1.1.12

发布日期:2017 年 7 月 24 日

orm

  • [orm] [bug]
    修复了从 1.1.11 开始的回归,其中向包含具有子查询加载关系的实体的查询添加额外的非实体列会失败,原因是在 1.1.11 中添加的检查作为#4011的结果。
    参考:#4033
  • [orm] [bug]
    修复了在 1.1 中添加的涉及 JSON NULL 评估逻辑的错误,作为#3514的一部分,其中逻辑不会适应与映射的Column不同命名的 ORM 映射属性。
    参考:#4031
  • [orm] [bug]
    WeakInstanceDict的所有方法中添加了KeyError检查,其中在检查key in dict之后立即对该键进行索引访问,以防止在负载下垃圾回收可能会将键从字典中移除,导致代码假定其存在后非常少见地引发KeyError
    参考:#4030

oracle

  • [oracle] [功能] [postgresql]
    Sequence添加了新的关键字Sequence.cacheSequence.order,以允许渲染 Oracle 和 PostgreSQL 理解的 CACHE 参数,以及 Oracle 理解的 ORDER 参数。感谢 David Moore 的拉取请求。

测试

  • [测试] [bug] [py3k]
    修复了与 Python 3.6.2 变更不兼容的测试固定装置中的问题。
    此更改也回溯到:1.0.18
    参考:#4034

1.1.11

发布日期:2017 年 6 月 19 日

orm

  • [orm] [bug]
    修复了子查询预加载的问题,该问题是从#2699#3106#3893修复的一系列问题中延续而来,涉及到“子查询”在从连接的继承子类开始,然后对基类的关系进行子查询预加载时包含正确的  FROM 子句,同时查询还包括对子类的条件。之前票据中的修复未考虑到从第一级更深层次加载更多的 subqueryload  操作,因此修复已进一步泛化。
    参考:#4011

sql

  • [sql] [bug]
    修复了在WithinGroup结构迭代期间可能发生的 AttributeError。
    参考:#4012

postgresql

  • [postgresql] [bug]
    继续修复 1.1.8 中发布的正确处理 PostgreSQL 版本字符串“10devel”的问题,另外增加了一个正则表达式升级以处理形式为“10beta1”的版本字符串。虽然现在 PostgreSQL 提供了更好的获取此信息的方法,但至少在 1.1.x 版本中我们将继续使用正则表达式,以减少与旧版或替代 PostgreSQL 数据库兼容性的风险。
    参考:#4005
  • [postgresql] [bug]
    修复了在使用带有排序规则的字符串类型的ARRAY时,在 CREATE TABLE 中未能生成正确语法的错误。
    参考:#4006

mysql

  • [mysql] [bug]
    MySQL 5.7 为“SHOW VARIABLES”命令引入了权限限制;MySQL 方言现在将处理当 SHOW 返回零行时的情况,特别是对于 SQL_MODE 的初始获取,并将发出警告,提示用户权限应该修改以允许该行存在。
    参考:#4007

mssql

  • [mssql] [bug]
    修复了在使用 Azure  数据仓库时必须从不同视图获取 SQL Server 事务隔离的 bug,现在查询将尝试针对两个视图执行,如果持续失败,则无条件引发  NotImplemented,以提供对未来新 SQL Server 版本中任意 API 更改的最佳弹性。
    参考:#3994
  • [mssql] [bug]
    为 SQL Server 方言添加了一个占位符类型XML,以便包含此类型的反射表可以重新呈现为 CREATE TABLE。该类型没有特殊的往返行为,也不支持额外的限定参数。
    参考:#3973

oracle

  • [oracle] [bug]
    当使用 cx_Oracle 的 6.0b1  或更高版本的 DBAPI 时,完全移除了对两阶段事务的支持。在任何情况下,两阶段特性在 cx_Oracle 5.x 下历史上从未可用,而  cx_Oracle 6.x 已经移除了这个特性依赖的连接级“twophase”标志。
    参考:#3997

1.1.10

发布日期:2017 年 5 月 19 日 星期五

orm

  • [orm] [bug]
    修复了级联操作(如“delete-orphan”等)无法定位与继承关系中本身是子类的关系链接的对象的 bug,从而导致操作无法执行。
    参考:#3986

schema

  • [schema] [bug]
    如果创建一个ForeignKeyConstraint对象时“local”和“remote”列的数量不匹配,现在会引发一个ArgumentError,否则会导致约束的内部状态不正确。请注意,这也会影响方言的反射过程产生的外键约束列集不匹配的情况。
    参考:#3949

postgresql

  • [postgresql] [bug]
    为 GRANT、REVOKE 关键字添加了“autocommit”支持。感谢 Jacob Hayes 的 Pull 请求。

mysql

  • [mysql] [bug]
    移除了对 UTC_TIMESTAMP MySQL 函数的古老且不必要的拦截,这个拦截妨碍了使用带参数的函数。
    参考:#3966
  • [mysql] [bug]
    修复了 MySQL 方言中有关在渲染 CREATE TABLE 时与 PARTITION 选项一起渲染表选项的 bug。PARTITION 相关选项需要跟随表选项,而以前这种顺序没有被强制执行。
    参考:#3961

oracle

  • [oracle] [bug]
    修复了 cx_Oracle 方言中的 bug,其中由于“b”字符,对 cx_Oracle 版本 6.0b1 的版本字符串解析会失败。现在版本字符串解析通过正则表达式而不是简单的分割。
    参考:#3975

misc

  • [bug] [ext]
    在声明类被垃圾回收并且新的 automap prepare()操作同时进行的情况下,防止测试“None”作为一个类,非常罕见地在 gc 后未完全处理的 weakref 上进行操作。
    参考:#3980

1.1.9

发布日期:2017 年 4 月 4 日

sql

  • [sql] [bug]
    修复了在 1.1.5 版本中由于 #3859 导致的回归,根据 Variant 的“右侧”规则调整表达式的“右侧”评估,以遵守底层类型的“右侧”规则,导致在我们确实希望左侧类型直接传递到右侧,以便将绑定级规则应用于表达式参数时,Variant 类型不适当地丢失。
    参考:#3952
  • [SQL] [错误] [PostgreSQL]
    更改了ResultProxy的机制,无条件延迟“自动关闭”步骤,直到Connection完成对象的操作;在 PostgreSQL ON CONFLICT with RETURNING 返回零行的情况下,自动关闭会发生在这种以前不存在的用例中,导致以前在 INSERT/UPDATE/DELETE 上无条件发生的通常自动提交行为失败。
    参考:#3955

杂项

  • [错误] [扩展]
    修复了在 1.1.8 版本中由于 #3950 导致的回归,当映射还包含 column_property 时,在“模式类型”或 TypeDecorator 的情况下,对列类型的更深层搜索会导致属性错误。
    参考:#3956

1.1.8

发布日期:2017 年 3 月 31 日

PostgreSQL

  • [PostgreSQL] [错误]
    增加了对解析 PostgreSQL 版本字符串的支持,例如“PostgreSQL 10devel”。感谢 Sean McCully 的拉取请求。

杂项

  • [错误] [扩展]
    修复了在sqlalchemy.ext.mutable中的 bug,在使用TypeEngine.copy()复制了类型后,Mutable.as_mutable()方法将不会跟踪该类型。这在 1.1 中与 1.0 相比变得更加退化,因为TypeDecorator类现在是SchemaEventTarget的子类,其中一项指示父Column应在复制Column时复制类型。在使用混合或抽象类的情况下,这些副本是常见的。
    参考:#3950
  • [bug] [ext]
    Result.count()方法添加了对绑定参数的支持,例如通常通过Query.params()设置的参数。之前,对参数的支持被省略了。感谢 Pat Deegan 的拉取请求。

1.1.7

发布日期:2017 年 3 月 27 日

orm

  • [orm] [feature]
    现在可以将aliased()构造传递给Query.select_entity_from()方法。实体将从由aliased()构造表示的可选择项中提取。这允许在与Query.select_entity_from()一起使用时使用aliased()的特殊选项,例如aliased.adapt_on_names
    参考:#3933
  • [orm] [bug]
    修复了在多线程环境下可能发生的竞态条件,这是由于通过#3915添加的缓存引起的。内部Column对象的集合可能会不适当地在别名对象上重新生成,当尝试渲染 SQL 并收集结果时,会让连接的急加载器困惑,并导致属性错误。现在,在别名对象被缓存并在线程之间共享之前,该集合会提前生成。
    参考:#3947

engine

  • [engine] [bug]
    添加了一个异常处理程序,当Connection的“autorollback”功能本身引发异常时,将会警告“cause”异常在 Py2K 上。在 Py3K 中,这两个异常自然由解释器报告为一个在处理另一个时发生。这是继续处理回滚失败处理的一系列更改的一部分,上次在 1.0.12 中作为#2696的一部分讨论过。
    参考:#3946

sql

  • [sql] [bug] [postgresql]
    增加了对VariantSchemaType对象相互兼容的支持。也就是说,可以针对像Enum这样的类型创建一个变体,并且创建约束和/或数据库特定类型对象的指令将根据变体的方言映射正确传播。
    参考:#2892
  • [sql] [bug]
    修复了编译器中的一个 bug,其中保存点的字符串标识符会被缓存在标识符引用字典中;由于这些标识符是任意的,如果一个Connection使用了无限数量的保存点,或者直接使用了无限数量的保存点子句构造,可能会发生小内存泄漏。这个内存泄漏不会影响绝大多数情况,因为通常会在每个事务或固定数量的事务基础上使用一个简单计数器从“1”开始渲染保存点名称的Connection在被丢弃之前使用。
    参考:#3931
  • [sql] [bug]
    修复了新“模式翻译”功能中的 bug,其中在与列表达式一起呈现时,翻译的模式名称将被调用为别名名称;仅当源翻译名称为“None”时才会发生。现在,“模式翻译”功能仅对SchemaItemSchemaType子类生效,即对应于数据库中可创建 DDL 结构的对象。
    参考:#3924

oracle

  • [oracle] [bug]
    修复了 cx_Oracle 的 WITH_UNICODE 模式,这是由于 cx_Oracle 5.3 现在似乎在构建中硬编码了此标志;使用此模式的内部方法未使用正确的签名。
    此更改也被回溯到:1.0.18
    参考:#3937

1.1.6

发布日期:2017 年 2 月 28 日

orm

  • [orm] [bug]
    解决了自从早期版本以来积累的一些长期未解决的性能问题,这是由于增加的抽象而导致的连接式贪婪加载查询构造系统。每次查询使用临时AliasedClass对象进行列查找开销较大,现已更换为使用缓存方法,利用一小组在连接式贪婪加载调用之间重复使用的AliasedClass对象。还对涉及贪婪连接路径构造的某些机制进行了优化。最坏情况下的连接式加载场景的端到端查询构造+单行提取测试的调用次数与 1.1.5 相比减少了约 60%,与 0.8.6 相比减少了 42%。
    参考:#3915
  • [orm] [bug]
    修复了“eager_defaults”功能中的一个主要低效性,即当  ORM 明确插入 NULL 时,会为列值发出不必要的  SELECT,对应于对象上未设置但没有指定任何服务器默认值的属性,以及在更新时过期的属性,尽管没有设置服务器 onupdate。由于这些列不是  eager_defaults 尝试使用的 RETURNING 的一部分,因此也不应该被后置 SELECT。
    参考:#3909
  • [orm] [bug]
    修复了两个与映射器  eager_defaults 标志密切相关的错误,与单表继承结合使用;一个是 eager defaults 逻辑会在 eager  defaults 获取期间无意中尝试访问映射器的“exclude_properties”列表中的列(由具有单表继承的 Declarative  使用),另一个是为了获取默认值而对行进行完整加载时,会失败地使用不正确的继承映射器。
    参考:#3908
  • [orm] [bug]
    修复了在 0.9.7 中首次引入的错误,由于#3106导致某些形式的多级子查询加载对别名实体产生错误查询,在最内层子查询中存在一个不必要的额外 FROM 实体。
    参考:#3893

orm 声明式

  • [orm] [declarative] [bug]
    修复了一个 bug,即 declarative 的“自动排除”功能确保单个表继承子类的列不会出现在基类的其他派生类属性中,对于从基类多级子类化不会生效。
    参考:#3895

sql

  • [sql] [bug]
    修复了一个 bug,即DDLEvents.column_reflect()事件不允许将非文本表达式作为新列的“default”值传递,例如FetchedValue对象表示通用触发默认值或text()构造。同时在文档中澄清了这一点。
    参考:#3905

postgresql

  • [postgresql] [bug]
    为“IMPORT FOREIGN  SCHEMA”、“REFRESH MATERIALIZED VIEW” PostgreSQL  语句添加了正则表达式,以便在通过连接或引擎调用时自动提交,而不需要显式事务。感谢 Frazer McLean 和 Paweł Stiasny  的拉取请求。
    参考:#3804
  • [postgresql] [bug]
    修复了 PostgreSQL ExcludeConstraint中的 bug,其中“whereclause”和“using”参数在像Table.tometadata()这样的操作期间不会被复制。
    参考:#3900

mysql

  • [mysql] [bug]
    为了正确引用,将新的 MySQL 8.0 保留字添加到 MySQL 方言中。感谢 Hanno Schlichting 的拉取请求。

mssql

  • [mssql] [bug]
    在“get_isolation_level”功能中添加了版本检查,该功能在首次连接时调用,因此对于 SQL Server 版本 2000,它会跳过,因为在 SQL Server 2005 之前不可用。
    参考:#3898

misc

  • [feature] [ext]
    添加了Result.scalar()Result.count()到“baked”查询系统。
    参考:#3896
  • [bug] [ext]
    修复了新的sqlalchemy.ext.indexable扩展中的 bug,其中设置一个属性,该属性本身引用另一个属性会失败。
    参考:#3901

1.1.5

发布日期:2017 年 1 月 17 日

orm

  • [orm] [bug]
    修复了在多个实体上使用连接急加载时,当也使用多态继承时会抛出“'NoneType’对象没有’isa’属性”的错误。这个问题是由于修复#3611引入的。
    此更改也被回溯到:1.0.17
    参考:#3884
  • [ORM] [错误]
    修复了子查询加载中的错误,其中作为“现有”行遇到的对象,例如在同一查询中从不同路径加载的对象,不会调用指定此加载的未加载属性的子查询加载程序。这个问题与#3431#3811中涉及的与连接加载类似的问题在同一领域。
    参考:#3854
  • [ORM] [错误]
    Session.no_autoflush上下文管理器现在确保在“finally”块中重置 autoflush 标志,以便如果在块内引发异常,则状态仍然适当地重置。感谢 Emin Arakelian 的拉取请求。
  • [ORM] [错误]
    修复了单表继承查询条件未插入查询中的错误,当Bundle构造用作选择条件时。
    参考:#3874
  • [ORM] [错误]
    修复了与#3177相关的错误,即Query发出的 UNION 或其他集合操作会将“单继承”条件应用于联合的外部(还引用了错误的可选择项),即使这些条件现在应该已经存在于内部子查询中。一旦对Query调用 union()或另一个集合操作,单继承条件现在会被省略,就像Query.from_self()一样。
    参考:#3856

示例

  • [示例] [错误]
    修复了版本历史示例中的两个问题,一个是历史表现在  autoincrement=False 以避免 1.1 版本中关于自动增量的新错误;另一个是现在使用 sqlite_autoincrement  标志以确保在 SQLite 上,即使删除了某些行,也会为表的生命周期使用唯一标识符。感谢 Carlos García Montoro  的拉取请求。
    参考:#3872

引擎

  • [引擎] [错误]
    Table反射的“extend_existing”选项会导致索引和约束在使用该参数与MetaData.reflect()(如 automap 扩展所做的)时重复,因为表既在外键路径中反射,也直接反射。在MetaData.reflect()序列中传递一个新的去重集合,以防止以这种方式重复反射。
    参考:#3861

sql

  • [sql] [bug]
    修复了最初在 0.9 版本中引入的 bug,通过#1068,其中order_by()将根据名称单独排序,即使标记的表达式与可选择中隐式或显式存在的表达式完全不同。现在,按标签排序的逻辑确保标记的表达式与解析为该名称的表达式相关联,然后再按标签名称排序;此外,名称必须在表达式中的其他位置明确解析为实际标签,而不仅仅是列名。这种逻辑与具有稍微不同目的的按文本名称排序功能明确分开。
    参考:#3882
  • [sql] [bug]
    修复了 1.1 版本中import *无法在 sqlalchemy.sql.expression 中工作的回归,因为any_all_函数拼写错误。
    参考:#3878
  • [sql] [bug]
    MetaData.reflect()中“无法反射”异常中嵌入的引擎 URL 现在隐藏了密码;此外,TLEngine__repr__现在的行为类似于Engine,隐藏了 URL 密码。感谢 Valery Yundin 的拉取请求。
  • [sql] [bug]
    修复了 Variant 中的问题,其中“右手边强制转换”逻辑继承自 TypeDecorator,会将右侧强制转换为 Variant 本身,而不是 Variant 的默认类型。在 Variant 的情况下,我们希望类型大部分像基本类型一样工作,因此现在覆盖了 TypeDecorator 的默认逻辑,以回退到基础包装类型的逻辑。目前主要与 JSON 有关。
    参考文献:#3859
  • [sql] [bg]
    修复了当 literal_binds 编译器标志未被 Insert 构造的“多值”功能所尊重时的 bug;随后的值现在被渲染为字面值。
    参考文献:#3880

postgresql

  • [postgresql] [bug]
    修复了新的“ON CONFLICT DO UPDATE”功能中的 bug,其中 UPDATE 子句的“set”值不会受到类型级别的处理,通常会生效以处理用户定义的类型级别转换以及方言所需的转换,例如 JSON 数据类型所需的转换。此外,澄清了 set_ 字典中的键应与列的“键”匹配,如果与列名不同。对于不匹配列键的剩余列名发出警告;出于兼容性原因,这些警告与以前一样发出。
    参考文献:#3888
  • [postgresql] [bug]
    现在 TIMETIMESTAMP 数据类型支持“精度”设置为零;之前零值会被忽略。感谢 Ionuț Ciocîrlan 的拉取请求。

mysql

  • [mysql] [feature]
    添加了一个新的参数 mysql_prefix,由 Index 构造支持,允许指定 MySQL 特定的前缀,如 “FULLTEXT”。感谢 Joseph Schorr 的拉取请求。
  • [mysql] [bug]
    MySQL 方言现在不会在反射的列上有“COMMENT”关键字时发出警告,但请注意评论尚未反射;这在未来的发布计划中。感谢 Lele Long 的拉取请求。
    参考:#3867

mssql

  • [mssql] [bug]
    修复了 SQL Server 方言尝试为 INSERT from SELECT 选择最后一行标识的 bug,在 SELECT 没有行的情况下会失败。对于这样的语句,内联标志设置为 True,表示不应获取最后一个主键。
    参考:#3876

oracle

  • [oracle] [bug] [postgresql]
    修复了在源表包含自动递增序列的情况下,从 SELECT 进行插入时编译失败的 bug。
    参考:#3877
  • [oracle] [bug]
    修复了在 Oracle 9.2 上 ALL_TABLES 查询中使用“COMPRESSION”关键字的 bug;尽管 Oracle 文档说明表压缩是在 9i 中引入的,但实际列直到 10.1 才存在。
    参考:#3875

misc

  • [bug] [py3k]
    修复了与没有 ‘r’ 修饰符的转义字符串相关的 Python 3.6 DeprecationWarnings,并为 Python 3.6 添加了测试覆盖。
    此更改也 回溯 至:1.0.17
    参考:#3886
  • [bug] [firebird]
    将对 Oracle 引号小写名称的修复移植到 Firebird,以便正确反映作为小写的表名,即使表名来自 get_table_names() 检查函数。
    参考:#3548

1.1.4

发布日期:2016 年 11 月 15 日

orm

  • [orm] [bug]
    修复了 Session.bulk_update_mappings() 中的一个 bug,即备用命名的主键属性在更新语句中无法正确跟踪。
    此更改也 回溯 至:1.0.16
    参考:#3849
  • [orm] [bug]
    修复了 Session.bulk_save() 中的一个 bug,在实现版本 id 计数器的映射与 UPDATE 结合使用时无法正确运行。
    此更改也 回溯 至:1.0.16
    参考:#3781
  • [orm] [bug]
    修复了当首次调用 mapper 属性或其他 ORM 构造添加到映射器/类之后,Mapper.attrsMapper.all_orm_descriptors 和其他派生属性将无法刷新的 bug。
    此更改也 回溯 至:1.0.16
    参考:#3778
  • [orm] [bug]
    由于#3457中的反序列化在 pickle 或 deepcopy 期间失败,导致 ORM 集合的所有属性未能建立,进而导致进一步的变异操作失败,因此修复了集合中的回归。
    参考:#3852
  • [orm] [bug]
    修复了长期存在的 bug,即“noload”关系加载策略会导致忽略 backrefs 和/或 back_populates 选项。
    参考:#3845

engine

  • [engine] [bug]
    Connection中删除了长期存在的“default_schema_name()”方法。这个方法是从一个非常旧的版本遗留下来的,是不起作用的(例如会引发异常)。感谢 Benjamin Dopplinger 的拉取请求。

sql

  • [sql] [bug]
    修复了一个 bug,在没有设置自动增量的情况下插入主键时,新添加的警告会失败地发出,详情请见#3216
    参考:#3842

postgresql

  • [postgresql] [bug]
    由于在#3807中修复的问题(版本 1.1.0),我们确保在 PostgreSQL 的 ON CONFLICT 的 DO UPDATE 部分的 WHERE 子句中限定了表名,但是实际上不能在 ON CONFLICT 本身的 WHERE 子句中放置表名。这是一个错误的假设,因此将回滚在#3807中的更改部分。
    参考:#3807#3846

mysql

  • [mysql] [feature]
    为 mysqlclient 和 pymysql 方言添加了对服务器端游标的支持。此功能可通过Connection.execution_options.stream_results标志以及相同方式中的server_side_cursors=True方言参数来使用,就像在 PostgreSQL 上的 psycopg2 一样。感谢 Roman Podoliaka 的拉��请求。
  • [mysql] [bug]
    MySQL  的原生 ENUM 类型支持发送任何非有效值,并且会返回一个空字符串。为了检查“是否返回空字符串”,在 ENUM 的 MySQL  实现中添加了一个硬编码规则,以便将此空字符串返回给应用程序,而不是将其拒绝为非有效值。请注意,如果您的 MySQL  枚举正在将值链接到对象,您仍将收到空字符串。
    参考:#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 方言),其中密码或用户名字段中存在分号时可能被解释为另一个标记的分隔符;现在在存在分号时对值进行引用。
    此更改也回溯到:1.0.16
    参考:#3762

1.1.3

发布日期:2016 年 10 月 27 日

orm

  • [orm] [bug]
    修复了由#2677引起的回归问题,即在对已在该会话中标记为已删除的对象调用Session.delete()时,会导致无法设置对象在标识映射中(或拒绝对象),从而导致刷新错误,因为对象处于工作单元不适应的状态。在这种情况下,恢复了  1.1 版本之前的行为,即将对象放回标识映射中,以便再次尝试 DELETE 语句,这会发出警告,指出未匹配预期行数(除非在会话外恢复了行)。
    参考:#3839
  • [orm] [bug]
    修复了一些Query方法(如Query.update()等)在针对一系列映射列而不是整个映射实体时会失败的回归问题。
    参考:#3836

sql

  • [sql] [bug]
    修复了在Enum中使用新值翻译和验证功能时的错误,其中在字符串连接中使用枚举对象会将整个表达式的类型保持为Enum类型,导致查找缺失。现在,针对Enum类型的列进行字符串连接将使用String作为表达式本身的数据类型。
    参考:#3833
  • [sql] [bug]
    修复了一个回归问题,该问题是#2919的副作用,对于一个不太典型的情况,即用户定义的TypeDecorator同时也是SchemaType的实例(而不是实现是这样的),会导致列附加事件被跳过。
    参考:#3832

postgresql

  • [postgresql] [bug]
    PostgreSQL 表反射将确保在反射不是Integer数据类型的主键列时,Column.autoincrement标志设置为 False,即使默认值与生成整数的序列相关。如果列被创建为 SERIAL 并且数据类型被更改,则 autoincrement 标志只能在 1.1 系列中的整数亲和性数据类型为 True 时才能为 True。
    参考:#3835

1.1.2

发布日期:2016 年 10 月 17 日

orm

  • [orm] [bug]
    修复了一个 bug,涉及到在一个多对一懒加载器的另一侧禁用连接集合急加载器的规则,首次添加在#1495中,如果父对象有一些其他与其关联的懒加载器绑定的查询选项,该规则将失败。
    参考:#3824
  • [orm] [bug]
    以类似于#3431#3811的方式修复了自引用实体、延迟列加载问题,其中一个实体由于自引用的急加载而在行中出现在多个位置;当延迟加载器仅适用于其中一个路径时,“存在”列加载器现在将覆盖该实体的延迟非加载,而不考虑行顺序。
    参考:#3822

sql

  • [sql] [bug]
    修复了由于新增函数引起的回归问题,该函数执行 sql DefaultGenerator对象的“包装可调用”函数时,当默认可调用是functools.partial或其他没有__module__属性的对象时,会引发__module__属性错误。
    参考:#3823
  • [sql] [bug] [postgresql]
    修复了Enum类型中的回归,其中事件处理程序在复制类型对象的情况下未被传递,这是由于#3250中添加的冲突的 copy()方法。在复制列时,例如在 tometadata()中或在使用具有列的声明性 mixin 时,通常会发生此复制。事件处理程序的缺失会影响为非本地枚举类型创建的约束,但更为关键的是 PostgreSQL 后端的 ENUM 对象。
    参考:#3827

postgresql

  • [postgresql] [bug] [sql]
    更改了生成多 VALUES 插入语句的绑定参数时使用的命名约定,以使编号参数名称不与现在在 PostgreSQL ON CONFLICT 构造中常见的 WHERE 子句的匿名参数发生冲突。
    参考:#3828

1.1.1

发布日期:2016 年 10 月 7 日

mssql

  • [mssql] [bug]
    #3810#3814中添加的“SELECT SERVERPROPERTY”查询在未知的 Pyodbc 和 SQL Server 组合上失败。虽然预料到了此功能的失败,但异常捕获不够广泛,因此现在捕获所有形式的 pyodbc.Error。
    参考:#3820

杂项

  • [bug] [core]
    当检测到各种缺失主键情��时,将引发的 CompileError 更改为警告。语句再次传递到数据库,其中将失败并像往常一样引发 DBAPI 错误(通常是 IntegrityError)。
    另请参阅
    不再为复合主键列隐式启用.autoincrement 指令
    参考:#3216

1.1.0

发布日期:2016 年 10 月 5 日

orm

  • [orm] [feature]
    增强了新的“raise”延迟加载策略,还包括一个“raise_on_sql”变体,可通过relationship.lazyraiseload()使用。此变体仅在延迟加载实际发出 SQL 时才引发异常,而不是在调用延迟加载机制时引发异常。
    参考:#3812
  • [orm] [feature]
    如果传递了None参数,Query.group_by()方法现在会重置分组集合,就像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()或构造函数发送给 Session 的无效绑定时引发的 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  集合中的顺序与被引用方的主键列不同……如果使用声明性混入和/或 declared_attr 来设置列,则会经常发生这种情况。
    参考:#3788
  • [orm] [bug]
    当映射上的两个 @validates 装饰器使用相同名称时,会引发异常。一次只支持一个特定名称的验证器,没有机制将它们链接在一起,因为在函数装饰器级别上验证器的顺序无法确定。
    另请参阅
    具有相同名称的 @validates 装饰器现在会引发异常
    参考:#3776
  • [orm] [bug]
    configure_mappers() 过程中引发的 Mapper 错误现在在异常消息中明确包含了源映射器的名称,以帮助处理那些被包装异常本身不包含源映射器的情况。感谢 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 now literal quoted
    参考:#3809
  • [sql] [bug] [postgresql]
    添加了编译器级别的标志,用于 PostgreSQL 在涉及 JSON、HSTORE 索引操作符以及它们的操作数时放置额外的括号,因为观察到 PostgreSQL 至少在 HSTORE 索引操作符的优先规则在 9.4 和 9.5 之间不一致。
    参考:#3806
  • [sql] [bug] [mysql]
    BaseException异常类现在被Connection的异常处理例程拦截,并包括ConnectionEvents.handle_error()事件的处理。在系统级别异常(不是Exception的子类,包括KeyboardInterrupt和 greenlet GreenletExit类)的情况下,默认情况下现在会使Connection失效,以防止在处于未知且可能已损坏状态的数据库连接上发生进一步操作。这个更改主要针对 MySQL 驱动程序,但是这个更改适用于所有 DBAPIs。
    另请参阅
    Engines now invalidate connections, run error handlers for BaseException
    参考:#3803
  • [sql] [bug]
    “eq” 和 “ne” 运算符不再是“关联”运算符列表的一部分,尽管它们仍被认为是“可交换的”。这允许像 (x == y) == z 这样的表达式在 SQL 级别保持括号。感谢 John Passaro 的拉取请求。
    参考:#3799
  • [sql] [bug]
    在表达式中使用未命名的 Column 对象的字符串化,如在许多情况下包括 ORM 错误报告中,现在将在字符串上下文中呈现名称为“”,而不是引发编译错误。
    参考:#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。这个 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 子句中不会被表限定。

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。
    这个更改也被回溯到:1.0.15
    参考:#3787
  • [mysql] [bug]
    修复了在 MySQL 下设置单表 inh 子类的错误,该子类包括额外列会破坏映射表的外键集合,从而干扰关系的初始化。
    参考:#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

misc

  • [bug] [orm.declarative]
    修复了在设置一个单表 inh 子类的 bug,该子类包括一个额外列,会破坏映射表的外键集合,从而干扰关系的初始化。
    此更改也回溯到:1.0.16
    参考:#3797

1.1.0b3

发布日期:2016 年 7 月 26 日

orm

  • [orm] [change]
    删除了一个警告,该警告可以追溯到 0.4 版本,当在通过连接或单表继承继承的两个映射器上放置同名关系时会发出。该警告不适用于当前的工作单元实现。
    另请参阅
    继承映射器上的同名关系不再发出警告
    参考:#3749

sql

  • [sql] [bug]
    修复了新的 CTE 功能中的错误,用于 update/insert/delete,作为包含语句(通常是 SELECT)内的 CTE 陈述,其中 oninsert 和 onupdate 值未调用嵌入语句。
    参考:#3745
  • [sql] [bug]
    修复了新的 CTE 功能中的错误,用于 update/insert/delete,其中围绕语句的匿名(例如,未传递名称)CTE构造将失败。
    参考:#3744

postgresql

  • [postgresql] [bug]
    修复了 PostgreSQL 方言对于 TypeDecoratorVariant 类型检查不够深入的 bug,以确定是否应该渲染 SMALLSERIAL 或 BIGSERIAL 而不是 SERIAL。
    此更改也被回溯至:1.0.14
    参考资料:#3739

oracle

  • [oracle] [bug]
    修复了 Select.with_for_update.of 中的 bug,其中 Oracle 的“rownum”方法限制/偏移失败,因为“OF”子句内的表达式没有适应,必须在最顶层引用子查询内的表达式。如果需要,现在将表达式添加到子查询中。
    此更改也被回溯至:1.0.14
    参考资料:#3741

misc

  • [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。


SqlAlchemy 2.0 中文文档(六十二)(2)https://developer.aliyun.com/article/1560759

相关文章
|
3月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(六十四)(3)
SqlAlchemy 2.0 中文文档(六十四)
29 0
|
3月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(六十四)(1)
SqlAlchemy 2.0 中文文档(六十四)
35 0
|
3月前
|
SQL JSON 关系型数据库
SqlAlchemy 2.0 中文文档(六十二)(5)
SqlAlchemy 2.0 中文文档(六十二)
14 0
|
3月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(六十二)(2)
SqlAlchemy 2.0 中文文档(六十二)
19 0
|
3月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(六十二)(4)
SqlAlchemy 2.0 中文文档(六十二)
20 0
|
3月前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(六十二)(3)
SqlAlchemy 2.0 中文文档(六十二)
18 0
|
3月前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(六十七)(3)
SqlAlchemy 2.0 中文文档(六十七)
20 0
|
3月前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(六十七)(4)
SqlAlchemy 2.0 中文文档(六十七)
13 0
|
3月前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(六十七)(5)
SqlAlchemy 2.0 中文文档(六十七)
23 0
|
3月前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(六十七)(2)
SqlAlchemy 2.0 中文文档(六十七)
14 0