1.3 Changelog¶

1.3.3

no release date

orm

  • [orm] [bug]

    修正了在新的“模棱两可的froms”查询逻辑中引入的1.3回归 join()在更明确地确定“左”端时处理模糊性 在哪里 Query 在FROM子句中显式地将实体 Query.select_from() 并使用 Query.join() 如果在附加联接中使用该实体,则稍后将导致“模棱两可的自”错误,因为该实体在 Query . 修复程序通过将独立实体折叠到已经是其一部分的联接中来解决这种不确定性,其方式与呈现select语句时最终发生的方式相同。

    References: #4584

mssql

  • [mssql] [bug]

    Fixed issue in SQL Server dialect where if a bound parameter were present in an ORDER BY expression that would ultimately not be rendered in the SQL Server version of the statement, the parameters would still be part of the execution parameters, leading to DBAPI-level errors. Pull request courtesy Matt Lewellyn.

    References: #4587

misc

  • [bug] [pool]

    固定的行为回归是由于对 Pool 那里 SingletonThreadPool 不再使用此选项,它会导致“返回时回滚”逻辑在相同的情况下发生 Engine 在事务上下文中多次用于连接或隐式执行,从而取消事务。虽然这不是推荐的使用引擎和连接的方法,但是在使用时,这是一个令人困惑的行为变化。 SingletonThreadPool ,无论在同一线程中使用同一引擎执行了什么操作,事务都应保持打开状态。这个 use_threadlocal 标志仍被弃用,但是 SingletonThreadPool 现在实现了它自己的相同逻辑版本。

    References: #4585

1.3.2

Released: April 2, 2019

orm

  • [orm] [bug] [ext]

    恢复了对纯python描述符的实例级支持,例如 @property 对象,与关联代理一起,如果被代理的对象根本不在ORM范围内,它将被分类为“不明确”,但直接被代理。对于类级访问,一个基本类级``uuuu get_uuuu()``现在返回 AmbiguousAssociationProxyInstance 直接,而不是引发异常,这是与返回 AssociationProxy 这是可能的。还改进了这些对象的字符串化,使其更能描述当前状态。

    References: #4573, #4574

  • [orm] [bug]

    修复了使用 with_polymorphic() 或者,当别名目标用作 Select.correlate_except()column_property() . 这需要对子句自适应机制进行修复,以正确处理出现在“相关项除外”列表中的可选项,处理方式与出现在“相关项”列表中的可选择项类似。这最终是一个相当基本的bug,持续了很长时间,但很难发现它。

    References: #4537

  • [orm] [bug]

    修正了在不使用的情况下,试图将关系选项链接到别名类时应该引发的新错误消息的回归。 PropComparator.of_type() 而是提高 AttributeError . 注意,在1.3中,创建从普通映射器关系到 AliasedClass 不使用 PropComparator.of_type() .

    References: #4566

sql

postgresql

  • [postgresql] [feature]

    增加了对psycopg2方言无参数连接URL的支持,这意味着可以将URL传递给 create_engine() 作为 "postgresql+psycopg2://" 没有其他参数来指示传递给libpq的空DSN,它指示连接到“localhost”,而不提供用户名、密码或数据库。拉请求由朱利安·梅恩提供。

    References: #4562

  • [postgresql] [bug]

    修改了 Select.with_for_update.of 参数,以便在传递联接或其他组合可选项时, Table 对象将从中筛选出来,允许将join()对象传递给参数,就像在将联接表继承与ORM一起使用时通常会发生的情况一样。拉车请求由Raymond Lu提供。

    References: #4550

1.3.1

Released: March 9, 2019

orm

  • [orm] [bug] [ext]

    修正了关联代理链接到同义词的回归在实例级和类级都不再有效。

    References: #4522

mssql

  • [mssql] [bug]

    当隔离级别更改为快照后,会发出commit(),因为pyodbc和pymssql都打开了一个隐式事务,该事务会阻止后续SQL在当前事务中发出。

    This change is also backported to: 1.2.19

    References: #4536

  • [mssql] [bug]

    由于 #4393 其中开口端的拆除 **kwFloat 由于传递了“scale”参数,数据类型导致此类型的反射失败。

    References: #4525

1.3.0

Released: March 4, 2019

orm

  • [orm] [feature]

    这个 Query.get() 方法现在可以接受属性键和值的字典,作为指示要加载的主键值的方法;对于组合主键特别有用。拉车请求由Sanjana S.提供。

    References: #4316

  • [orm] [feature]

    现在可以将SQL表达式指定给ORM刷新的主键属性,方法与中描述的普通属性相同。 将SQL插入/更新表达式嵌入到刷新中 其中,表达式将通过返回返回,然后返回到ORM;如果是pysqlite,则使用cursor.lastrowid属性。需要支持返回的数据库(例如postgresql、oracle、sql server)或pysqlite。

    References: #3133

engine

  • [engine] [feature]

    修改了格式 StatementError 当变细。每个错误细节在多个新行上被分解,而不是在一行上被分隔开。此外,SQL表示现在将对SQL语句进行字符串化,而不是使用 repr() ,使换行符按原样呈现。内特·克拉克的请求。

    References: #4500

sql

  • [sql] [bug]

    这个 Alias 类和相关子类 CTELateralTableSample 已被改写,因此用户无法直接构造对象。这些构造要求使用独立构造函数或可选绑定方法来实例化新对象。

    References: #4509

schema

  • [schema] [feature]

    添加了新参数 Table.resolve_fksMetaData.reflect.resolve_fks 当设置为false时,将禁用在 ForeignKey 对象,这既可以减少省略表的SQL开销,也可以避免由于特定于数据库的原因而无法反映的表。二 Table 相同的对象 MetaData 即使两个表的反射是单独发生的,集合仍然可以彼此引用。

    References: #4517

1.3.0b3

Released: February 8, 2019

orm

  • [orm] [bug]

    改善的行为 orm.with_polymorphic() 与加载程序选项结合使用,尤其是通配符操作以及 orm.load_only() . 多态对象的目标将更准确,这样实体上的列级选项将正确生效。 #4468 .

    References: #4469

orm declarative

  • [bug] [declarative] [orm]

    添加了一些在基于 AbstractConcreteBaseDeferredReflectionAutoMap 在映射准备好使用之前使用,该映射包含类的描述性信息,而不是陷入信息较少的其他故障模式。

    References: #4470

sql

  • [sql] [bug]

    完全删除了作为 select()Query 被强制到的对象 text() 自动构造;发出的警告现在是argumenterror,或者在order_by()/group_by()的情况下是compilerError。从1.0版开始,这就发出了一个警告,但是它的存在仍然会引起对这种行为可能被误用的关注。

    请注意,已为order_by()/group_by()发布了公共CVE,该提交解决了该问题:CVE-2019-7164 CVE-2019-7548

    References: #4481

  • [sql] [bug]

    报价适用于 Function 名称,通常但不一定由 sql.func 在编译时构造,如果它们包含非法字符,例如空格或标点符号。但是,这些名称和以前一样被视为不区分大小写,这意味着如果名称包含大写或混合大小写字符,那么仅此一项不会触发引用。目前,为了向后兼容,保持大小写不敏感。

    References: #4467

  • [sql] [bug]

    在接受为纯字符串的关键DDL短语中添加了“SQL短语验证”,包括 ForeignKeyConstraint.on_deleteForeignKeyConstraint.on_updateExcludeConstraint.usingForeignKeyConstraint.initially ,对于只需要一系列SQL关键字的区域。任何建议需要引用该短语的非空格字符都将引发 CompileError . 此更改与作为 #4481 .

    References: #4481

postgresql

  • [postgresql] [bug]

    修正了在索引类型(如gist、btree等)或exclude约束中使用大写名称将其视为要引用的标识符,而不是将其呈现为原样的问题。新的行为将这些类型转换为小写,并确保它们只包含有效的SQL字符。

    References: #4473

misc

  • [bug] [ext]

    在将关联代理与集合或字典一起使用时,实现了更全面的分配操作(例如“批量替换”)。修复了创建冗余代理对象以替换旧代理对象的问题,这会导致过多的事件和SQL,并且在唯一约束的情况下,会导致刷新失败。

    References: #2642

  • [change] [tests]

    测试系统已经移除了对鼻子的支持,这是几年来未维护的,并且在python 3下产生了警告。测试套件目前在pytest上是标准化的。拉式请求,由Parth Shandilya提供。

    References: #4460

1.3.0b2

Released: January 25, 2019

general

  • [general] [change]

    整个库中的一个巨大变化确保所有被标记为已弃用或遗留的对象、参数和行为现在都发出 DeprecationWarning 调用时出现警告。由于python 3解释器现在默认为显示拒绝警告,以及基于tox和pytest等工具的现代测试套件倾向于显示拒绝警告,因此此更改应使您更容易注意哪些API功能已过时。这一变化的一个主要理由是,尽管如此仍能看到现实世界使用的长期不受欢迎的功能最终可以在不久的将来被删除;其中最大的例子是 SessionExtensionMapperExtension 类以及一些其他事件前扩展挂钩,这些挂钩自0.7版以来已被弃用,但仍保留在库中。另一个问题是,一些主要的长期行为也将被弃用,包括线程本地引擎策略、convert_unicode标志和非主映射器。

    References: #4393

orm

  • [orm] [feature]

    实现了一个新功能 AliasedClass 构造现在可以用作 relationship() . 这使得“非主映射器”的概念不再是必要的,因为 AliasedClass 更容易配置和自动继承映射类的所有关系,并保留加载程序选项正常工作的能力。

    References: #4423

  • [orm] [feature]

    新增 MapperEvents.before_mapper_configured() 事件。此事件用每个映射器事件补充其他“配置”阶段映射器事件,每个映射器事件接收 Mapper 在其配置步骤之前,还可以用来防止或延迟特定 Mapper 使用新返回值的对象 orm.interfaces.EXT_SKIP . 有关示例,请参见文档链接。

    References: #4397

  • [orm] [bug]

    修复了一个长期存在的问题,即在删除某个重复的集合成员时,重复的集合成员将导致backref删除该成员与其父对象之间的关联,这是在一条语句中交换两个对象的副作用。

    References: #1103

  • [orm] [bug]

    扩展了作为 #3287 ,其中对使用通配符的子类所做的加载程序选项将自身扩展到包括将通配符应用到父类上的属性,以及“绑定”加载程序选项,例如在类似表达式中 Load(SomeSubClass).load_only('foo') . 属于的父类的列 SomeSubClass 也将以同样的方式排除,如同未绑定选项 load_only('foo') 使用。

    References: #4373

  • [orm] [bug]

    改进了ORM在加载程序选项遍历区域中发出的错误消息。这包括早期发现不匹配的加载程序策略,以及更清楚地解释为什么这些策略不匹配。

    References: #4433

  • [orm] [bug]

    集合的“移除”事件现在在移除项之前调用,如果 collection.remove() 方法,与大多数其他形式的集合项移除(例如 __delitem__ ,更换 __setitem__ )为了 pop() 方法,移除事件在操作后仍将激发。

  • [orm] [bug] [engine]

    为核心和ORM的执行选项添加了访问器,通过 Query.get_execution_options()Connection.get_execution_options()Engine.get_execution_options()Executable.get_execution_options() . 公关人员:Daniel Lister。

    References: #4464

  • [orm] [bug]

    由于以下原因,关联代理中的固定问题 #3423 这导致了习俗的使用 PropComparator 具有混合属性的对象,例如 dictlike-polymorphic 在关联代理中不起作用的示例。增加的严格性 #3423 已经放宽了,并且添加了附加逻辑以适应链接到自定义混合的关联代理。

    References: #4446

  • [orm] [bug]

    实现了 .get_history() 方法,也意味着 AttributeState.history ,为了 synonym() 属性。以前,尝试通过同义词访问属性历史记录会引发 AttributeError .

    References: #3777

  • [orm] [change]

    添加了一个新函数 close_all_sessions() 它接管了 Session.close_all() 方法,现在已弃用,因为它会混淆为类方法。拉请求由奥古斯汀·特兰卡特提供。

    References: #4412

orm declarative

  • [orm declarative] [bug]

    增加了一个 __clause_element__() 方法到 ColumnProperty 它允许在声明性映射类中使用未完全声明的列或延迟属性,当在类声明中的约束或其他面向列的方案中使用时,稍微友好一些,尽管这在开放式表达式中仍然不起作用;更喜欢调用 ColumnProperty.expression 接收时的属性 TypeError .

    References: #4372

engine

  • [engine] [feature]

    添加了公共访问器 QueuePool.timeout() 返回 QueuePool 对象。拉式请求,由Irina Delamare提供。

    References: #3689

  • [engine] [change]

    “threadlocal”引擎策略自大约0.2版本以来一直是SQLAlchemy的一个遗留功能,现在已被弃用,连同 Pool.threadlocal 参数 Pool 在大多数现代用例中都没有效果。

    References: #4393

sql

  • [sql] [feature]

    修正了 AnsiFunction 类,普通SQL函数的基础,如 CURRENT_TIMESTAMP ,接受位置参数,如常规特殊函数。为了适应这种情况,在特定后端的许多函数接受诸如“小数秒”精度之类的参数。如果函数是用参数创建的,它将呈现圆括号和参数。如果没有参数存在,编译器将生成非括号形式。

    References: #4386

  • [sql] [change]

    这个 create_engine.convert_unicodeString.convert_unicode 参数已被弃用。这些参数是在大多数python dbapis几乎不支持python unicode对象时构建的,而sqlAlchemy需要承担非常复杂的任务,即以一种执行方式在整个系统中的unicode和bytestrings之间对数据和SQL字符串进行编组。多亏了python 3,dbapis不得不适应Unicode感知的API,而现在所有由SQLAlchemy支持的dbapi都支持Unicode,包括python 2,这使得这个长期存在且非常复杂的特性最终(大部分)被删除。当然,还有一些python 2边缘案例中,SQLAlchemy必须处理unicode,但是这些都是自动处理的;在现代使用中,不需要最终用户与这些标志进行交互。

    References: #4393

mssql

  • [mssql] [bug]

    这个 literal_processor 对于 UnicodeUnicodeText 数据类型现在呈现 N SQL Server对SQL表达式中呈现的Unicode字符串值所要求的文本字符串表达式前面的字符。

    References: #4442

misc

  • [bug] [ext]

    修正了1.3.0b1中由 #3423 如果访问只存在于多态子类上的属性的关联代理对象将引发 AttributeError 即使被访问的实际实例是该子类的实例。

    References: #4401

1.3.0b1

Released: November 16, 2018

orm

  • [orm] [feature]

    添加了新功能 Query.only_return_tuples() . 导致 Query 对象无条件返回键化的元组对象,即使查询是针对单个实体的。拉请求提供埃里克阿特金。

    This change is also backported to: 1.2.5

  • [orm] [feature]

    增加新标志 Session.bulk_save_objects.preserve_orderSession.bulk_save_objects() 方法,默认为true。当设置为false时,给定的映射将按每个对象类型分组为插入和更新,以允许更多机会一起批处理公共操作。拉车请求,由亚历山德罗·库奇提供。

  • [orm] [feature]

    “selectin”加载程序策略现在在简单的一对多加载的情况下省略了join,在这种情况下它只依赖相关表中的加载,而依赖相关表的外键列来匹配父表中的主键。可以通过设置 relationship.omit_join 标记为false。非常感谢杰森·里斯在这方面所做的努力。

    References: #4340

  • [orm] [feature]

    补充 .info 字典到 InstanceState 类,来自调用的对象 inspect() 在映射的对象上。

    References: #4257

  • [orm] [bug]

    修复了使用 LateralQuery.join() 以及 Query.select_entity_from() 不会将子句自适应应用于联接的右侧。”横向”介绍了连接右侧的可关联用例。在此之前,不考虑对该条款的修改。注意,仅在1.2中,由 Query.subquery() 由于 #4304 ;可选的需要由 select() 功能是“横向”连接的右侧。

    This change is also backported to: 1.2.12

    References: #4334

  • [orm] [bug]

    修正了被动删除“all”的问题,即即使从父集合中删除了某个对象后,该对象的外键属性仍保持其值。以前,工作单元会将其设置为空,即使被动删除指示不应修改它。

    References: #3844

  • [orm] [bug]

    改进了将多对一对象表达式绑定在一起的关系的行为,这样,对相关对象上的列值的检索现在可以针对从其父对象分离的对象进行恢复。 Session ,即使属性已过期。中的新功能 InstanceState 用于在某个特定列属性的最后一个已知值过期之前对其进行memoize,以便表达式仍然可以在对象同时分离和过期时对其进行计算。使用现代属性状态特性,还可以根据需要改进错误条件,以生成更具体的消息。

    References: #4359

  • [orm] [bug] [mysql] [postgresql]

    ORM现在将子查询中的“for update”子句加倍,该子句在某些情况下与joined eager loading一起呈现,正如我们观察到的那样,MySQL不会锁定子查询中的行。这意味着查询使用两个for update子句呈现;请注意,在某些后端(如Oracle)上,子查询的for update子句被静默忽略,因为它们是不必要的。此外,对于主要与PostgreSQL一起使用的“of”子句,仅当使用for update时,才会在内部子查询上呈现for update,以便可选择项可以针对select语句中的表。

    References: #4246

  • [orm] [bug]

    重构的 Query.join() 进一步阐明构造连接的各个组件。此重构添加了 Query.join() 当FROM列表中有多个元素或查询针对多个实体时,确定联接最合适的“左侧”。如果有多个from/entity匹配,则会引发一个错误,要求指定on子句来解决歧义。尤其是我们看到的回归 #4363 但也有普遍的用途。代码路径 Query.join() 现在更容易跟踪,并且错误情况在操作的早期更具体地确定。

    References: #4365

  • [orm] [bug]

    解决了长期存在的问题 Query 其中一个标量子查询,如 Query.exists()Query.as_scalar() 以及其他来源 Query.statement 当用于新的 Query 这需要实体适应,例如当查询被转换为联合时,或者从_Self()中转换为a时,更改会从 select() 对象由 Query.statement 访问器。

    References: #4304

  • [orm] [bug]

    当在python 3下的ORM刷新期间,主键值在python中不可排序时,会重新引发一个信息性异常,例如 Enum 那没有 __lt__() 方法;通常python 3会引发 TypeError 在这种情况下。刷新过程按python中的主键对持久对象排序,因此值必须是可排序的。

    References: #4232

  • [orm] [bug]

    已删除由 MappedCollection 班级。此转换器仅用于断言传入的字典键与其对应对象的字典键匹配,并且仅在批量设置操作期间使用。转换器可能会干扰自定义验证器或 AttributeEvents.bulk_replace() 希望进一步转换传入值的侦听器。这个 TypeError 当传入密钥与值不匹配时,此转换器将引发此问题;在大容量分配期间传入的值将被键入其值生成的密钥,而不是字典中显式存在的密钥。

    总之,@转换器被 AttributeEvents.bulk_replace() 作为的一部分添加的事件处理程序 #3896 .

    References: #3604

  • [orm] [bug]

    向延迟加载添加了新的行为,当多对一的“旧”值被检索时,会发生这种情况,这样,由于 lazy="raise" 或者跳过分离的会话错误。

    References: #4353

  • [orm] [bug]

    ORM中长期存在的监督 __delete__ 多对一关系的方法是不起作用的,例如对于诸如 del a.b . 这现在实现,相当于将属性设置为 None .

    References: #4354

orm declarative

  • [bug] [declarative] [orm]

    修复了声明性不更新 Mapper 至于存在哪些属性,在调用和记忆映射器属性集合之后添加或删除其他属性。附加地,A NotImplementedError 如果从当前映射的类中删除完全映射的属性(例如列、关系等),则现在引发,因为如果删除该属性,映射器将无法正常工作。

    References: #4133

engine

  • [engine] [feature]

    将新的“后进先出”模式添加到 QueuePool ,通常通过设置标志启用 create_engine.pool_use_lifo 是真的。”“后进先出”模式意味着刚签入的相同连接将是第一个再次签出的连接,允许在仅部分使用池期间从服务器端清除多余的连接。拉车请求由Taem Park提供。

sql

  • [sql] [feature]

    重构的 SQLCompiler 揭发 SQLCompiler.group_by_clause() 方法类似于 SQLCompiler.order_by_clause()SQLCompiler.limit_clause() 方法,可由方言重写以自定义Group By呈现方式。拉请求礼遇塞缪尔周。

    This change is also backported to: 1.2.13

  • [sql] [feature]

    补充 Sequence 到将呈现有意义字符串表达式的“字符串SQL”系统 ("<next sequence value: my_sequence>" )在没有方言的情况下进行字符串化时,包含“sequence nextvalue”表达式的语句,而不是引发编译错误。

    References: #4144

  • [sql] [feature]

    添加了新的命名约定标记 column_0N_namecolumn_0_N_name 等,它将呈现特定约束在序列中引用的所有列的名称/键/标签。为了适应这种命名约定的长度,SQL编译器的自动截断功能现在也应用于约束名称,它为约束创建了一个缩短的、确定生成的名称,该名称将应用于目标后端,而不超过该后端的字符限制。

    这一变化还修复了另外两个问题。一个是 column_0_key 令牌不可用,即使记录了此令牌,另一个是 referred_column_0_name 令牌将不经意地呈现 .key 而不是 .name 如果这两个值不同,则返回该列。

    References: #3989

  • [sql] [feature]

    向“expanding in”绑定参数功能添加了新的逻辑,这样,如果给定的列表为空,则会生成一个特定于不同后端的特殊“empty set”表达式,从而允许in表达式是完全动态的,包括表达式中的空表达式。

    References: #4271

  • [sql] [feature]

    Python 内置 dir() 现在支持SQLAlchemy“属性”对象,例如核心列集合(例如 .cmapper.attrs 等等,也允许ipython自动完成。拉请求由Uwe Korn提供。

  • [sql] [feature]

    添加了新功能 FunctionElement.as_comparison() 它允许SQL函数充当可以在ORM中工作的二进制比较操作。

    References: #3831

  • [sql] [bug]

    添加基于“like”的运算符作为“comparison”运算符,包括 ColumnOperators.startswith() ColumnOperators.endswith() ColumnOperators.ilike() ColumnOperators.notilike() 因此,所有这些运算符都可以作为ORM“primaryjoin”条件的基础。

    References: #4302

  • [sql] [bug]

    已修复问题 TypeEngine.bind_expression()TypeEngine.column_expression() 如果目标类型是 Variant 或其他目标类型 TypeDecorator . 此外,SQL编译器现在在呈现这些方法时调用方言级别的实现,以便方言现在可以为内置类型提供SQL级别的处理。

    References: #3981

postgresql

  • [postgresql] [feature]

    添加了新的PG类型 postgresql.REGCLASS 这有助于将表名转换为OID值。拉请求由塞巴斯蒂安银行提供。

    This change is also backported to: 1.2.7

    References: #4160

  • [postgresql] [feature]

    添加了对PostgreSQL分区表反射的基本支持,例如将relkind='p'添加到返回表信息的反射查询中。

    References: #4237

mysql

  • [mysql] [feature]

    在mysql中添加了对create fulltext index的“with parser”语法的支持,使用 mysql_with_parser 关键字参数。反射也被支持,它适应了MySQL的特殊注释格式,用于报告这个选项。此外,“全文”和“空间”索引前缀现在反射回 mysql_prefix 索引选项。

    References: #4219

  • [mysql] [feature]

    在mysql上添加了对要排序的on-duplicate key update语句中参数的支持,因为mysql update子句中的参数顺序非常重要,与中描述的方式类似 参数顺序更新 . 拉请求由Maxim Bublis提供。

  • [mysql] [feature]

    连接池的“预ping”功能现在使用 ping() 对于mysqlclient、pymysql和mysql connector python,dbapi连接的方法。拉请求由Maxim Bublis提供。

sqlite

mssql

  • [mssql] [feature]

    补充 fast_executemany=True SQL Server pyodbc方言的参数,该参数允许在使用Microsoft ODBC驱动程序时使用pyodbc的同名新性能功能。

    References: #4158

  • [mssql] [bug]

    已弃用 Sequence 用SQL Server来影响标识值的“开始”和“增量”,有利于新参数 mssql_identity_startmssql_identity_increment 直接设置这些参数。 Sequence 将用于生成真实 CREATE SEQUENCE 在将来的版本中使用SQL Server进行DDL。

    References: #4362

oracle

  • [oracle] [feature]

    添加了一个当前仅由cx_Oracle方言使用的新事件, DialectEvents.setiputsizes() . 事件传递的字典 BindParameter 对象到DBAPI特定类型的对象,这些对象在转换为参数名后将传递到cx_Oracle cursor.setinputsizes() 方法。这既允许查看setinputsizes进程,也允许更改传递给此方法的数据类型的行为。

    This change is also backported to: 1.2.9

    References: #4290

  • [oracle] [bug]

    更新了可以发送到cx_Oracle DBAPI的参数,以允许所有当前参数以及尚未添加的未来参数。此外,删除了版本1.2中不推荐使用的未使用参数,此外,我们现在将“threaded”默认为false。

    References: #4369

  • [oracle] [bug]

    Oracle方言将不再使用nchar/nclob数据类型表示通用的Unicode字符串或CLOB字段以及 UnicodeUnicodeText 除非国旗 use_nchar_for_unicode=True 传递给 create_engine() -这包括创建表行为以及 setinputsizes() 对于绑定参数。在读取端,python 2下的自动unicode转换被添加到char/varchar/clob结果行中,以匹配python 3下的cx_Oracle行为。为了减轻在python 2下的性能损失,在python 2下使用了sqlachemy的非常高性能(在构建C扩展时)本机Unicode处理程序。

    References: #4242

misc