Release: 1.4.25 | Release Date: September 22, 2021

SQLAlchemy 1.4 Documentation

更改和迁移

0.7换热器

0.7.11

no release date

orm

  • [orm] [bug]

    修复了List Instrumentation无法表示 [0:0] 正确,尤其是在使用时 insert(0, item) 关联代理。由于python集合中的一些奇怪之处,这个问题更可能出现在python 3而不是2中。

    References: #2807

  • [orm] [bug]

    当查询表单时修复了错误: query(SubClass).options(subqueryload(Baseclass.attrname)) 在哪里 SubClass 是一个联合的 BaseClass ,将无法应用 JOIN 在属性加载的子查询中,生成笛卡尔积。由于忽略了额外的行,因此填充的结果仍然趋向于正确,因此这个问题可能是由于应用程序的性能下降而导致的,否则这些应用程序将正常工作。

    References: #2699

  • [orm] [bug]

    修复了工作单元中的错误,即如果两个表之间没有设置foreignkey约束,则联接的继承子类可以将“sub”表的行插入父表之前。

    References: #2689

  • [orm] [bug]

    改进了在检测到“backref循环”时发出的错误消息,即当属性事件触发两个其他属性之间的双向分配而没有结束时发出的错误消息。这种情况不仅发生在分配了错误类型的对象时,也可能发生在将属性错误配置为backref到现有backref对时。

    References: #2674

  • [orm] [bug]

    如果存在问题的属性不是基于列的纯属性,则在将MapperProperty分配给替换现有属性的映射器时会发出警告。关系属性的替换很少(曾经?)什么是有意的,通常是指映射器的错误配置。如果backref在继承关系(0.8中的错误)中现有的backref之上配置自身,则也会发出警告。

    References: #2674

engine

  • [engine] [bug]

    使用的regexp make_url() 函数现在解析ipv6地址,例如用括号括起来。

    References: #2851

sql

  • [sql] [bug]

    固定回归可追溯到0.7.9,如果在多个FROM条款中提及CTE的名称,则可能无法正确引用该名称。

    References: #2801

  • [sql] [bug] [cte]

    修复了公用表表达式系统中的错误,其中如果CTE仅用作 alias() 构造,它不会使用WITH关键字呈现。

    References: #2783

  • [sql] [bug]

    固定错误 CheckConstraint DDL,其中“Quote”标志来自 Column 不会传播对象。

    References: #2784

postgresql

  • [postgresql] [feature]

    添加了对PostgreSQL传统子字符串函数语法的支持,当正则时呈现为“substring(x from y for z)”。 func.substring() 使用。由Gunnlaugur_r Briem提供。

    References: #2676

mysql

  • [mysql] [bug]

    5.5、5.6版MySQL保留字更新,由Hanno Schlichting提供。

    References: #2791

misc

  • [bug] [tests]

    修正了在测试执行中“日志”的导入,它在某些Linux平台上不起作用。

    References: #2669, pull request 41

0.7.10

Released: Thu Feb 7 2013

orm

  • [orm] [bug]

    修复了如果任意数量的 sessionmaker 对象已创建。当取消引用时,由sessionmaker创建的匿名子类不会因为事件包中的剩余类级引用而被垃圾收集。这个问题也适用于任何与事件调度器一起使用特殊子类的定制系统。

    References: #2650

  • [orm] [bug]

    Query.merge_result() 现在可以从外部联接中加载实体可能 None 不会引发错误。

    References: #2640

  • [orm] [bug]

    这个 MutableComposite 类型不允许 MutableBase.coerce() 要使用的方法,即使代码似乎表明了这一意图,但现在可以工作了,并添加了一个简短的示例。作为一个副作用,这个事件处理程序的机制已经改变,所以 MutableComposite 类型不再按类型添加全局事件处理程序。也在0.8.0b2中。

    References: #2624

  • [orm] [bug]

    修复了会话记帐错误,如果替换的主键是通过非UnitOfWork已建立的INSERT语句或通过另一个实例的主键开关建立的,那么将标识映射中的已删除对象替换为同一主键的另一个对象将在rollback()上引发“冲突状态”错误。

    References: #2583

engine

sql

  • [sql] [bug]

    反向调节至 __repr__ 对于 TypeDecorator 到0.7,允许 PickleType 产生清洁 repr() 去帮助阿伦比克。

    References: #2584, #2594

  • [sql] [bug]

    固定错误在哪里 Table.tometadata() 如果失败了 Column 该列既有一个外键,也有一个可选的“.key”名称。

    References: #2643

  • [sql] [bug]

    修正了使用server_OnUpdate=<fetchedValue_defaultClause>而不传递“for_Update=true”标志将默认对象应用于server_Default的错误,从而消除了存在的所有问题。对于这种用法,不应该需要显式for_update=true参数(尤其是因为文档显示了一个未使用的示例),因此,如果标志未设置为与该参数对应的内容,则现在可以使用给定默认对象的副本在内部排列该参数。

    References: #2631

  • [sql] [gae] [mysql]

    将条件导入添加到 gaerdbms 尝试导入rdbms-apiproxy与rdbms-googleapi以在开发和生产平台上工作的方言。现在也要向 instance 属性。尊敬的肖恩·林奇。此外,还提供了支持用户名/密码的后端口增强功能,并修复了0.8中的错误代码解释。

    References: #2649

mysql

  • [mysql] [feature]

    在我们的SQL方言中添加了“发出警告”标志。

    References: #2523

  • [mysql] [feature]

    在mysqldb方言中添加了“read_timeout”标志。

    References: #2554

sqlite

  • [sqlite] [bug]

    对0.7.9中发布的与sqlite相关的问题进行了更多调整,以便在反射外键时拦截旧的sqlite引用字符。除了截取双引号外,其他引用字符(如括号、反勾号和单引号)现在也被截取。

    References: #2568

mssql

  • [mssql] [bug]

    修正了由于msql方言的“schema rendering”逻辑没有考虑.key,将“key”与“schema”一起用于所属表将无法定位结果行的错误。

  • [mssql] [bug]

    在mssql信息模式中添加了一个py3k条件,用于不必要的.decode()调用,修复了py3k中的反射。

    References: #2638

oracle

  • [oracle] [bug]

    Oracle long类型虽然是无边界的文本类型,但在返回结果行时似乎不使用cx_oracle.lob类型,因此已修复方言以排除应用cx_oracle.lob筛选的long。

    References: #2620

  • [oracle] [bug]

    已修复的用法 .prepare() 与cx-oracle结合使用,使返回值为 False 将导致没有呼叫 connection.commit() 从而避免“无事务”错误。两阶段事务现在已经显示为与sqlacalchemy和cx_oracle一起以基本方式工作,但是受到驱动程序观察到的警告的影响;有关详细信息,请查看文档。

    References: #2611

  • [oracle] [bug]

    已将从setinputsizes()步骤中排除的cx_Oracle类型列表更改为仅包含字符串和Unicode;将删除CLOB和NCLOB。这是为了解决cx_Oracle行为,该行为对于executeMany()调用是中断的。在0.8中,应用了相同的更改,但也可以通过exclude_setinputsizes参数进行配置。

    References: #2561

0.7.9

Released: Mon Oct 01 2012

orm

  • [orm] [bug]

    修复了新的AbstractConcreteBase帮助器的主要本地错误,其中超类的“type”属性不会在子类上被重写以生成“reserved for base”错误消息,而是在其中放置一个“do-nothing”属性。这与使用concreteBase以及所有经典具体映射的行为都不一致,除非显式重写,否则多态基中的“type”列将在子类上显式禁用。

  • [orm] [bug]

    lazy='dynamic'与useList=false组合时发出警告。这是0.8中的异常提升。

  • [orm] [bug]

    修正了相关对象分配中的用户错误可能导致递归溢出的错误,如果分配触发了与同一目标的不正确类上的双向属性同名的backref。现在出现了一个信息错误。

  • [orm] [bug]

    修正了当ORM使用“版本”特性绑定“版本”列时传递错误类型信息的错误。测试由丹尼尔·米勒提供。

    References: #2539

  • [orm] [bug]

    在session.commit()中的“flush”中添加了额外的逻辑,这样,在“commit”完成之前,由after_flush()或after_flush_postexec()钩子添加的额外状态也会在随后的flush中刷新。对flush()的后续调用将继续进行,直到“after”flush钩子停止添加新状态。如果在每次添加新内容后出现断开的u flush()钩子,“溢出”计数器也将设置为100。

    References: #2566

engine

  • [engine] [feature]

    事件系统内存使用率的显著提高;在为特定类型的事件建立实例级侦听器之前,不会再为该事件创建实例级集合。

    References: #2516

  • [engine] [bug]

    修正了当队列池有等待连接的线程时发生的disconnect detect+dispose会使这些线程在旧池上等待超时的持续时间(或者如果禁用超时,则无限期等待)的错误。修复程序现在用一个特殊的异常情况通知那些等待者,并让他们移到新的池中。

    References: #2522

  • [engine] [bug]

    已将gaerdbms导入添加到 mysql/__init__. py,它的缺失阻止了新的gae方言被加载。

    References: #2529

  • [engine] [bug]

    修正了CEXTension错误,如果给定的索引是列对象而不是字符串,“不明确的列错误”将无法正常工作。注意,这里仍然有一些列目标问题,这些问题在0.8中得到了解决。

    References: #2553

  • [engine] [bug]

    修复了枚举的repr()以包含“name”和“native_enum”标志。帮助Alembic自动生成。

sql

  • [sql] [bug]

    修复了DropIndex构造以支持与远程架构中的表关联的索引。

    References: #2571

  • [sql] [bug]

    修正了over()结构中的错误,即通过空列表传递分区的方法或按顺序的方法,而不是按无方法,将无法正确生成。由Gunnlaugur_r Briem提供。

    References: #2574

  • [sql] [bug]

    修正了CTE错误,即CTE中的位置绑定参数本身会破坏绑定参数的整体顺序。这主要影响了作为支持位置绑定+CTE的平台的SQL Server。

    References: #2521

  • [sql] [bug]

    修复了CTE中更多的非直觉问题,这些问题阻止了在没有别名的情况下引用自身联合中的CTE。CTE现在只在名称上呈现唯一的CTE,只呈现给定名称的最外层CTE—所有其他引用都以名称呈现。这甚至包括引用同一CTE对象的不同版本的其他CTE/选择,例如选择或合并所有选择。在本例中,我们在某种程度上松脱了对象同一性和词汇同一性之间通常的联系。两个不相关CTE之间的真名冲突现在引发错误。

  • [sql] [bug]

    根据起始列的引用规则,引用应用于公用表表达式的WITH RECURSIVE子句中的列名。

    References: #2512

  • [sql] [bug]

    修正了0.7.6中引入的回归,在某些“clone+replace”场景中,select语句的from列表可能不正确。

    References: #2518

  • [sql] [bug]

    修正了在嵌入子查询中使用联合或类似的方法会干扰结果列目标的错误,如果结果列的最终名称与嵌入联合中的名称相同。

    References: #2552

  • [sql] [bug]

    修正了自0.6以来关于结果行目标的回归。应该可以使用select()语句,其中包含基于字符串的列,即select( [“ID”,“姓名”] )。从(“MyTable”)中选择_,并使该语句可由具有这些名称的列对象作为目标;这是查询(MyClass)的机制。从_语句(某些_语句)中选择。在某种程度上,使用select的具体情况( ['id'] ,相当于选择( [literal_column('id')] ,停止在这里工作,因此已重新安装,当然已测试过。

    References: #2558

  • [sql] [bug]

    在ColumnOperators基中添加了缺少的运算符是_u()、isnot(),这样,这些长时间可用的运算符与所有其他运算符一样,都以方法的形式存在。

    References: #2544

postgresql

  • [postgresql] [bug]

    反射主键约束中的列现在按约束本身定义它们的顺序返回,而不是按表的顺序返回。由Gunnlaugur_r Briem提供。

    References: #2531

  • [postgresql] [bug]

    在我们用来检测与pg断开连接的消息列表中添加了“终止连接”,当服务器重新启动时,这些消息似乎出现在某些版本中。

    References: #2570

mysql

  • [mysql] [bug]

    更新mysqlconnector接口以使用更新的“客户端标志”和“charset”API,由david mcnelis提供。

sqlite

  • [sqlite] [feature]

    添加了对在sqlite中实现的localtimestamp()SQL函数的支持,由Richard Mitchell提供。

  • [sqlite] [bug]

    调整了一个非常老的错误修复程序,它试图解决从sqlite 3.6.14开始就“修复”的sqlite问题,在使用“foreign_key_list”pragma时,关于表名周围的引号。修正已调整为不干扰 实际上是以这个名字 尽可能多地描述一个列或表;如果目标表的名称周围确实有引号,则sqlite仍然不会为foreign_key_list()返回正确的结果,例如 part 其名称(即“myTable”)。

    References: #2568

  • [sqlite] [bug]

    调整列默认反射代码以将非字符串值转换为字符串,以适应不以字符串形式传递默认信息的旧SQLite版本。

    References: #2265

mssql

  • [mssql] [bug]

    修正了编译器错误,如果语句也使用了限制/偏移量,那么在ORDER BY中使用相关子查询将无法正确呈现,这是由于行_number()over子句中呈现错误。修复礼遇sayap

    References: #2538

  • [mssql] [bug]

    修正了一个编译器错误,如果给定的select()有一个“offset”属性,它将被修改,导致构造第二次不能正确编译。

    References: #2545

  • [mssql] [bug]

    修复了这样的错误:如果在多个模式中存在相同的约束/表,主键约束的反射将使列加倍。

0.7.8

Released: Sat Jun 16 2012

orm

  • [orm] [feature]

    flush()的“objects”参数不再被弃用,因为已经标识了一些有效的用例。

  • [orm] [bug]

    修复了从多态映射到目标的SubQueryLoad()导致对多态结果中遇到的每个不同类重新调用查询的错误。

    References: #2480

  • [orm] [bug]

    修复了声明性中的错误,即如果列包含不同于其属性名的名称,则联接表、复合列(通常用于ID)中的列的优先级将不正确。这将导致对实体属性所做的PrimaryJoin条件等错误。因为这应该是其中的一部分,所以这就是。

    References: #1892, #2491

  • [orm] [bug]

    固定的identity_key()函数,该函数不接受标识的标量参数。.

    References: #2508

  • [orm] [bug]

    修正了Populate_现有选项不会传播到子查询预加载程序的错误。.

    References: #2497

engine

  • [engine] [bug]

    修复了C版本的result proxy中的内存泄漏问题,因此dbapis如果不为结果行提供纯python元组,将无法正确地减少refcounts。受影响最显著的DBAPI是PYODBC。

    References: #2489

  • [engine] [bug]

    修正了影响py3k的错误,其中传递给engine/connection execute()的字符串位置参数由于 __iter__ 出现在PY3K字符串上。

    References: #2503

sql

  • [sql] [bug]

    添加BigIt到 types.__all__, bigint、binary、varbinary到sqlachemy模块名称空间,再加上测试以确保不会再次发生这种破坏。

    References: #2499

  • [sql] [bug]

    已修复公共表表达式呈现,以便在select语句包含union或其他复合表达式(由btbuilder提供)时正常工作。

    References: #2490

  • [sql] [bug]

    修正了在克隆的select()结构(由gunnlaugur_r briem提供)上append_column()无法正常工作的错误。

    References: #2482

postgresql

  • [postgresql] [bug]

    在反射枚举时删除了不必要的表子句,。由Gunnlaugur_r Briem提供。

    References: #2510

mysql

  • [mysql] [feature]

    为谷歌应用引擎添加了一种新方言。礼遇Richie Foreman。

    References: #2484

oracle

  • [oracle] [bug]

    已将rowid添加到Oracle.*。

    References: #2483

0.7.7

Released: Sat May 05 2012

orm

  • [orm] [feature]

    在查询中添加前缀_with()方法,调用select()。前缀_with()允许在语句中放置mysql select指令。戴安娜·克拉克

    References: #2443

  • [orm] [feature]

    向@validates添加了新标志include_removes。如果为true,则集合移除和属性del事件也将发送到验证函数,该函数在使用此标志时接受附加参数“is_remove”。

  • [orm] [bug]

    工作单元中的固定问题,即如果以前的值尚未加载,将非非非自引用多对一关系设置为无将无法保持更改。

    References: #2477

  • [orm] [bug]

    修正了0.7.6中的错误,通过该错误,列映射的集合用于映射为联接或其他间接可选项的列,将无法正常工作。

    References: #2409

  • [orm] [bug]

    修正了一个错误,即没有映射到类上的列上的多态性会被错误地包含在merge()操作中,从而引发错误。

    References: #2449

  • [orm] [bug]

    修复了表达式注释机制中可能导致带有别名和联接的select语句呈现错误的错误,特别是在使用column_property()时。

    References: #2453

  • [orm] [bug]

    修正了订单列表不可酸洗的错误。Jeff Dairiki提供

    References: #2454

  • [orm] [bug]

    修复了在关系比较中调用SomeClass.SomeRelationship.Like()等未实现方法会产生递归溢出而不是NotImplementederRor的错误。

sql

  • [sql] [feature]

    添加了新的连接事件dbapi_error()。对于传递原始dbapi异常的所有dbapi级错误,在sqlAlchemy修改光标状态之前调用。

  • [sql] [bug]

    删除了创建没有列的索引时的警告;虽然这可能不是用户想要的,但它是一个有效的用例,因为索引可能只是某个名称的索引的占位符。

  • [sql] [bug]

    如果在调用“with engine.begin()”时conn.begin()失败,则新获取的连接将在正常向前传播异常之前显式关闭。

  • [sql] [bug]

    将binary、varbinary添加到 types.__all__.

    References: #2474

postgresql

  • [postgresql] [feature]

    为PostgreSQL的_update/with_lockmode()选项添加了新的:为_update=“read”/with_lockmode(“read”),为_update=“read_nowait”/with_lockmode(“read_nowait”)。它们分别发出“for share”和“for share nowait”。戴安娜·克拉克

    References: #2445

  • [postgresql] [bug]

    在反射域时删除了不必要的表子句。

    References: #2473

mysql

  • [mysql] [bug]

    修正了这样一个错误:innodb的autoincrement复合列的“key”子句中的列名将双引号引用一个保留字的名称。尊敬的Jeff Dairiki。

    References: #2460

  • [mysql] [bug]

    修正了获取“信息模式”模式的“视图名称”()将无法检索标记为“系统视图”的视图的错误。马修·特兰。

  • [mysql] [bug]

    修正了这样一个错误:如果cast()用于一个SQL表达式,而该表达式的类型不受cast()支持,因此cast不由方言呈现,则如果casted表达式要求对其进行分组,则计算顺序可能会改变;分组现在应用于这些表达式。

    References: #2467

sqlite

  • [sqlite] [feature]

    添加了sqlite执行选项“sqlite_raw_colnames=true”,将绕过从sqlite cursor.description返回的列名称中删除“.”的尝试。

    References: #2475

  • [sqlite] [bug]

    当替换表的主键列(如通过extend_existing)时,insert()构造使用的“auto increment”列将被重置。以前,它将仍然引用前面的主键列。

    References: #2525

mssql

  • [mssql] [feature]

    添加了临时的create_引擎标志,它支持unicode与pyodbc方言绑定,以强制方言是否将python-unicode文本传递给pyodbc。

  • [mssql] [bug]

    使用pyodbc方言时修复了use_scope_identity create_engine()标志。以前,如果设置为false,则忽略此标志。当设置为“假”时,对于那些“隐式返回”设置为“假”的表,每次插入后都会得到“select@@identity”以获取最后插入的ID。

  • [mssql] [bug]

    使用SQL Server的UPDATE..FROM语法要求在FROM子句中同时存在该表的别名时,更新的表必须存在于FROM子句中。更新后的表现在总是出现在FROM中,而FROM首先出现在其中。礼貌待人。

    References: #2468

0.7.6

Released: Wed Mar 14 2012

orm

  • [orm] [feature]

    在会话中添加了“无自动刷新”上下文管理器,与:一起使用将临时禁用自动刷新。

  • [orm] [feature]

    将cte()方法添加到查询中,从核心调用公共表表达式支持(见下文)。

    References: #1859

  • [orm] [feature]

    添加了使用query(sometable.filter)时查询表绑定列名的功能(colname=value)。

    References: #2400

  • [orm] [bug]

    修复了事件注册错误,该错误主要显示为在事件与会话类关联之后创建的sessionmaker()实例中没有注册的事件。

    References: #2424

  • [orm] [bug]

    修正了这样一个错误,即一个包含“literal”的primaryjoin条件在编译时会产生一个错误,在编译时,某些类型的深层嵌套表达式也需要多次呈现相同的绑定参数名。

    References: #2425

  • [orm] [bug]

    删除了对映射对象执行多次删除时对受影响行数的检查。如果在两行之间存在on-delete级联,则无法从dbapi中获得准确的行数;在任何情况下,大多数dbapi都不支持此特定的计数,mysqldb就是其中一个显著的例子。

    References: #2403

  • [orm] [bug]

    修复了使用属性“mapped”集合或列“mapped”集合的对象无法被pickle的错误。

    References: #2409

  • [orm] [bug]

    修正了MappedCollection仅在使用@collection.internally_instructed的自定义子类中使用时无法获得适当的集合检测的错误。

    References: #2406

  • [orm] [bug]

    修正了一个错误,即SQL适应机制在涉及联合继承、joinedload()、limit()和columns子句中的派生函数的非常嵌套的场景中会失败。

    References: #2419

  • [orm] [bug]

    修正了层叠选项的repr()以包含refresh expire。还将级联修改为<frozenset>。

    References: #2417

  • [orm] [bug]

    改进了“声明性反射”示例以支持单表继承、多个调用以准备()、替换模式中存在的表,只建立反射的类的子集。

  • [orm] [bug]

    缩小在flush()中应用的测试,以检查一个表中部分为空的pk的更新,从而仅在确实要发生更新时才实际发生。

    References: #2390

  • [orm] [bug]

    修正了一个错误,如果一个方法名与一个列名冲突,当映射器试图检查方法对象上的get方法时,就会产生一个类型错误。

    References: #2352

examples

  • [examples] [bug]

    在烧杯示例中修改了query()函数中的params_以从完全编译的语句中提取bindparams,这是一种快速获取所有内容的方法,包括columns子句中的子查询等。

engine

  • [engine] [feature]

    为连接添加了“no_parameters=true”执行选项。如果不存在参数,则将该语句作为cursor.execute(语句)传递,从而在不存在参数集合时调用dbapis行为;对于psycopg2和mysql python,这意味着不解释字符串中的%符号。这只在使用此选项时发生,而不只是在参数列表为空的情况下发生,否则,这将导致通常转义百分号的SQL表达式行为不一致(在编译时,无法提前知道某些情况下是否存在参数)。

    References: #2407

  • [engine] [feature]

    添加pool_reset_on_return参数以创建_引擎,允许控制“连接返回”行为。还将新参数'rollback'、'commit'、'none'添加到pool.reset_on_return以允许对连接返回活动进行更多控制。

    References: #2378

  • [engine] [feature]

    在引擎中添加了一些像样的上下文管理器,连接::

    with engine.begin() as conn:
        <work with conn in a transaction>

    和:

    with engine.connect() as conn:
        <work with conn>

    两者都在完成时关闭连接,提交或回滚事务,但在engine.begin()上有错误。

  • [engine] [bug]

    添加了对mockConnection(即与strategy=“mock”一起使用的)的执行_options()调用,它充当参数的传递。

sql

  • [sql] [feature]

    添加了对SQL标准公共表表达式(CTE)的支持,允许选择对象作为CTE源(尚不支持DML)。这是通过任何select()构造上的cte()方法调用的。

    References: #1859

  • [sql] [bug]

    修复了核心内存泄漏问题,当C扩展与特定类型的结果获取一起使用时,特别是在调用ORM query.count()时,会发生这种问题。

    References: #2427

  • [sql] [bug]

    修复了这样一个问题:行上基于属性的列访问将引发非C版本的attributeError,而非C版本的attributeError。现在在这两种情况下都会引发属性错误。

    References: #2398

  • [sql] [bug]

    添加了对在结果集行中将列的.key用作字符串标识符的支持。.key当前列为“alternate”名称,并被以该key值作为常规名称的列的名称取代。对于下一个主要的sqlacalchemy版本,我们可以反转这个优先级,以便.key优先,但这还没有决定。

    References: #2392

  • [sql] [bug]

    在insert()或update()构造的values()子句中声明不存在的列时,将发出警告。将移动到0.8中的异常。

    References: #2413

  • [sql] [bug]

    对select语句中列应用标签方式的重大更改允许“截断”标签,即在python中生成的超过最大标识符长度的标签名称(请注意,这可以通过create_engine()上的label_length进行配置),以便在子查询内部呈现时正确引用,也可以保留t在结果集行中使用它们在Python名称中的原始值。

    References: #2396

  • [sql] [bug]

    修复了新的“autoload_replace”标志中的错误,该标志将无法保留反射表的主键约束。

    References: #2402

  • [sql] [bug]

    当传递的参数不能解释为列或表达式时,将引发索引。在创建索引时完全没有列时发出警告。

    References: #2380

mysql

  • [mysql] [feature]

    通过使用参数to index和primary key constraint,增加了对mysql索引和主键约束类型(即使用)的支持,由Diana Clarke提供。

    References: #2386

  • [mysql] [feature]

    为所有mysql方言添加了对“isolation_-level”参数的支持。多亏你的心给了我这个补丁。

    References: #2394

sqlite

  • [sqlite] [bug]

    修正了C扩展中的错误,即字符串格式不会应用于作为整数返回的数值;这主要影响不维护数字比例设置的sqlite。

    References: #2432

mssql

  • [mssql] [feature]

    添加了对mssql插入、更新和删除表提示的支持,在updatebase上使用new with_hint()方法。

    References: #2430

oracle

  • [oracle] [feature]

    添加了一个新的create_engine()标志,强制_to_decimal=false,禁用精度数值处理,通过将所有数值转换为十进制,可以增加大量开销。

    References: #2399

  • [oracle] [bug]

    添加了长期缺少的编译支持

    References: #2401

  • [oracle] [bug]

    将“level”添加到Oracle的保留字列表中。

    References: #2435

0.7.5

Released: Sat Jan 28 2012

orm

  • [orm] [feature]

    将“class_registry”参数添加到声明性_base()中。允许两个或多个声明性基共享同一个类名注册表。

  • [orm] [feature]

    query.filter()接受多个条件,这些条件将通过和联接,即query.filter(x==y,z>q,…)

  • [orm] [feature]

    为关系加载器选项添加了新功能,以允许“默认”加载器策略。将“*”传递给joinedload()、lazyload()、subqueryload()或noload()中的任何一个,它将成为用于所有关系的加载程序策略,但查询中明确说明的关系除外。感谢即将到来的贡献者KentBower,他提供了一个详尽的、编写良好的测试套件!

    References: #2351

  • [orm] [feature]

    添加了新的声明性反射示例,说明了如何最好地将表反射与声明性混合,以及如何使用中的一些新特性。

    References: #2356

  • [orm] [bug]

    修复了在刷新失败后建立的修改会话状态将作为在手动调用rollback()后自动开始的后续事务的一部分提交的问题。在rollback()中检查会话的状态,如果存在新状态,将发出警告,并再次调用restore_snapshot(),放弃这些更改。

    References: #2389

  • [orm] [bug]

    修正了从0.7.4开始的回归,即使用超类中已经检测到的列作为“多态”无法解析基础列。

    References: #2345

  • [orm] [bug]

    如果对两个未连接的关系不适当地使用xyzload_all(),则引发异常。

    References: #2370

  • [orm] [bug]

    修正了event.listen(someclass)强制完全不必要地编译映射器的错误,使得在模块导入时很难设置事件(没有人注意到这一点吗??)

    References: #2367

  • [orm] [bug]

    修正了混合属性在任何()中都不能作为kw参数工作的错误,has()。

  • [orm] [bug]

    确保所有ORM异常的可处理性,以实现多处理兼容性。

    References: #2371

  • [orm] [bug]

    当setattr/delattr用于未定义fset或fdel的混合物时,实现的标准“can't set attribute”/“can't delete attributeerror”。

    References: #2353

  • [orm] [bug]

    修复了未选取对象的状态设置不足,无法在可变对象扩展所建立的unpickle()事件中正常工作的错误,前提是该对象需要在ueq_uuu()或类似的范围内访问ORM属性。

    References: #2362

  • [orm] [bug]

    修正了“合并”层叠可能错误解释卸载的属性的错误,如果将“加载”挂起标志与relationship()一起使用。感谢肯特·鲍尔的测试。

    References: #2374

  • [orm]

    修正了从0.6开始的回归,其中,如果在需要在挂起的对象上发出非-“get()”惰性子句的地方使用了“load_on_pending”relationship()标志,那么它将无法加载。

examples

  • [examples] [feature]

    将版本控制示例简化为使用声明性混合和事件侦听器,而不是元类+sessionextension。

    References: #2313

  • [examples] [bug]

    修正了在删除表之前关闭会话的大型collection.py。

    References: #2346

engine

  • [engine] [bug]

    补充 __reduce__ 语句错误、数据库错误、列错误,以便在使用多处理时可以处理异常。但是,并非所有DBAPI都支持这一点,例如psycopg2。

    References: #2371

  • [engine] [bug]

    改进了将非字符串或无效字符串传递给sqlite使用的任何日期/时间处理器(包括C和python版本)时的错误消息。

    References: #2382

  • [engine] [bug]

    修复了一个名为“<a>的绑定表列对象(与标记为“<tablename>的列匹配)在结果集行中定位时可能不适当匹配的错误。

    References: #2377

  • [engine] [bug]

    修正了“mock”策略中的错误,即没有调用正确的DDL访问方法,导致“create/drop sequence”语句被复制

    References: #2384

sql

  • [sql] [feature]

    新的反射功能“autoload_replace”;在表上设置为false时,可以自动加载表,而不替换现有的列。允许构建更灵活的表构造/反射链,包括它有助于将声明性和表反射结合起来。查看wiki上的新示例。

    References: #2356

  • [sql] [feature]

    向sqlAlchemy.sql命名空间添加了“false()”和“true()”表达式构造,但不是sqlAlchemy.sql命名空间的一部分 __all__ 到目前为止。

  • [sql] [feature]

    方言特定的编译器现在针对所有类型/语句编译问题引发编译器错误,而不是InvalidRequestError或ArgumentError。create table的DDL将重新引发compilerError,以包含问题列的表/列信息。

    References: #2361

  • [sql] [bug]

    改进了add_column()的API,这样,如果将同一列添加到其自己的表中,则不会引发错误,约束也不会增加一倍。还可以帮助处理一些反射/声明模式。

    References: #2356

  • [sql] [bug]

    修复了这样一个问题:如果没有给语句提供任何参数,那么对于bindparam()的required=true将不会引发“required”异常。

    References: #2381

mysql

  • [mysql] [bug]

    修正了由于george reilly过滤掉非反射“分区”指令警告的regexp

    References: #2376

sqlite

  • [sqlite] [bug]

    sqlite中fk约束的“name”反映为“none”,而不是“0”或其他整数值。在任何情况下,SQLite似乎都不支持约束命名。

    References: #2364

  • [sqlite] [bug]

    sql.false()和sql.true()分别在sqlite中编译为0和1

    References: #2368

  • [sqlite] [bug]

    在获取表名和视图名时,删除了sqlite方言中的一个错误“raise”,其中逻辑已就位,以返回到没有“sqlite_temp_master”表的旧版本sqlite。

mssql

  • [mssql] [bug]

    调整了mssql.time类型中使用的regexp,以确保仅为值的“微秒”部分接收六位数字,这是python的datetime.time()所期望的。注意,对发送微秒的支持至少在PYODBC中还不可能实现。

    References: #2340

  • [mssql] [bug]

    根据最近的报告显示pymsql做得更好,取消了pymsql的“30个字符”限制。pymssql还没有经过很好的测试,由于dbapi处于不断变化之中,仍然不清楚这个驱动程序的状态以及sqlachemy的实现应该如何适应。

    References: #2347

oracle

  • [oracle] [bug]

    将ora-03135添加到Oracle“连接丢失”错误的永不结束列表中

    References: #2388

misc

  • [bug] [core]

    映射器用于缓存insert/update/delete语句的已更改lrucache使用递增计数器而不是时间戳来跟踪条目,与使用time.time()相比,它具有更高的可靠性,这可能会导致某些平台上的测试失败。

    References: #2379

  • [bug] [core]

    在调用池连接代理的weakref回调之前,添加了对该函数的布尔检查,这样在应用程序退出时不会发出警告,并且在调用weakref回调之前,gc已经从模块中删除了该函数。

    References: #2383

  • [bug] [py3k]

    修正了util.py3k标志的不当用法,并将其重命名为util.py3k_警告,因为此标志仅用于检测-3标志系列的导入限制。

    References: #2348

0.7.4

Released: Fri Dec 09 2011

orm

  • [orm] [feature]

    多态性现在接受了许多新的值:

    • 未以其他方式映射的独立表达式

    • 列_property()对象

    • 任何列的字符串名称属性()或映射列的属性名称

    文档包括一个使用case()构造的示例,这可能是这里使用的一个常见构造。部分

    多态性中的独立表达式传播到单表继承子类,以便在WHERE/JOIN子句中使用它们将行限制为该子类,这是通常的行为。

    References: #2238, #2345

  • [orm] [feature]

    identityset支持与difference()相同的-operator,在处理session.dirty等时非常方便。

    References: #2301

  • [orm] [feature]

    为名为“ignore-fk”的列autoincrement添加了新值,可以用于强制对仍然是foreignkeyconstraint一部分的列执行autoincrement。关系文档中的新示例说明了它的用途。

  • [orm] [bug]

    修正了当“弹出”多对一的值以响应从过时的一对多删除时的backref行为-由于多对一已被更新,因此跳过了该操作。

    References: #2315

  • [orm] [bug]

    经过几年不这样做,在“is x a parent of y”功能中添加了更多的粒度,该功能用于确定“y”上的fk是否需要“清空”,以及是否应使用“删除孤立级联”删除“y”。现在,测试将父对象的python标识及其标识键考虑在内,以查看最后一个已知的y父对象是否绝对是x。如果无法做出决定,则会引发staledataerror。引发此错误的条件非常罕见,要求对以前的父级进行垃圾收集,并且以前可能非常不适当地更新/删除自移到新父级后的记录,但在某些情况下,以前发生过“静默成功”,现在会在出现歧义时引发。过期“y”会重置“父”跟踪程序,这意味着x.remove(y)可能会最终删除y,即使x已过时,但这与以前的行为相同;在这种情况下,建议x也过期。

    References: #2264

  • [orm] [bug]

    修复了query.get()中布尔上下文中用户映射对象的不当计算。也在0.69.

    References: #2310

  • [orm] [bug]

    在被动返回从不设置符号中添加了缺少的逗号

    References: #2304

  • [orm] [bug]

    collate(“some collation”)现在可以工作了。也在0.6

    References: #1776

  • [orm] [bug]

    复合属性的值现在在插入或更新操作后过期,而不是就地重新生成。这样可以确保在使用该值重新生成复合数据之前,首先加载在刷新中过期的列值。

    References: #2309

  • [orm] [bug]

    在Access上加载复合值时,修复程序也会发出“刷新”事件,即使所有列值都已存在(视情况而定)。这修复了依赖于“加载”事件的“可变”扩展,以确保父字典是最新的,修复了。感谢Scott Torborg提供的测试用例。

    References: #2308, #2309

  • [orm] [bug]

    修复了一个错误,即使用具体继承的子类与新的concreteBase或abstractConcreteBase结合使用,将无法将深度超过一个级别的子类应用到每个基的“多态加载程序”。

    References: #2312

  • [orm] [bug]

    修正了在生成“base”映射器时,使用新的abstractConcreteBase的子类无法获得正确的“baseu mapper”属性的错误,从而导致后来的失败。

    References: #2312

  • [orm] [bug]

    修复了在生成某些类型的联接inh联接时,针对ORM级别列创建的列_property()可以被视为不同实体的错误。

    References: #2316

  • [orm] [bug]

    修复了意外将元组传递给session.query()时引发的错误格式设置。也在0.69.

    References: #2297

  • [orm] [bug]

    现在跟踪对单个表继承子类的query.join()调用,并用于消除附加的where..在标准中,通常附加单表继承,因为联接应该容纳它。这允许外部联接到单个表子类以产生正确的结果,并且在处理单个表继承联接时,总体上会产生较少的WHERE条件。

    References: #2328

  • [orm] [bug]

    __table_args__ 现在可以作为空元组和空dict传递。感谢Fayaz Yusuf Khan的帮助。

    References: #2339

  • [orm] [bug]

    更新警告消息时,设置删除孤儿不删除不再引用0.6,因为我们从未有机会升级到异常。理想情况下,作为一个例外,这可能会更好,但这两者都不重要。

    References: #2325

  • [orm] [bug]

    修正了get_history()中引用一个没有值的复合属性时的错误;增加了get_history()对复合属性的覆盖,而复合属性只是一个userland函数。

examples

  • [examples] [bug]

    修复了历史上“meta.py”示例中的错误,其中“unique”标志没有从生成要放在基上的列的单个表继承子类中删除。

engine

  • [engine] [bug]

    修正了当事务是两阶段或保存点事务时,transaction.rollback()会在无效连接上抛出错误的错误。对于普通事务,如果连接无效,rollback()将是一个no op,因此尽管它不完全清楚是否应该是no op,但至少现在接口是一致的。

    References: #2317

sql

  • [sql] [feature]

    update()构造现在可以在where子句中容纳多个表,该子句将呈现postgresql和mssql识别的“update..from”构造。在mysql上编译时,将生成“update T1,t2,…”。如果列对象用作“values”参数或generative方法中的键,MySQL还可以在set子句中对多个表进行呈现。

    References: #1944, #2166

  • [sql] [feature]

    向名为“python_type”的类型添加了访问器,返回特定类型引擎实例的基本python类型对象(如果已知),否则将引发NotImplementederRor。

    References: #77

  • [sql] [bug]

    与相关,对select()上关于“from”列表的更改进行了一些调整。由于这简化了各种用例,并且消除了如果列在表达式中已被使用后附加到表中,则需要“警告”的情况,因此,ou froms集合不再是memoize,select()构造现在将始终生成正确的表达式。这里可能没有真正意义上的性能;select()对象几乎总是临时的,希望优化select()重用的系统将使用“编译缓存”功能。调用select.bind时可能发生的命中已经减少,但绝大多数用户无论如何都不应该使用“绑定元数据”)。

    References: #2261, #2316

  • [sql] [bug]

    对修复进行进一步的调整,以便生成方法比克隆方法更好地工作(尽管这几乎是一个非用例)。特别是,这使得只使用_Only_Columns()的操作更加一致。添加了附加的文档到with_only_columns(),以澄清预期的行为,这些行为因而改变。

    References: #2261, #2319

schema

  • [schema] [feature]

    添加了对远程“架构”的新支持:

  • [schema] [feature]

    表上的“扩展现有”标志现在允许反射过程对已定义的表对象生效;如果同时设置了autoload=true和extend-existing=true,则整组列将从表中反射,然后该表将 重写 这些列已经存在,而不是没有活动发生。但是,自动加载运行中直接出现的列将一如既往地使用。

    References: #1410

  • [schema] [bug]

    修正了当使用“切换”类型(如char/uuid类型)的typecorator时,typecorator将返回“类型关联”的过时值的错误。

  • [schema] [bug]

    修正了inspector.get表名的“order_by='foreign_key'”选项没有正确实现排序的错误,用现有的排序算法替换。

  • [schema] [bug]

    列级检查约束的“name”(如果存在)现在使用“constraint<name>check<expression>”在create table语句中呈现。

    References: #2305

  • [schema]

    metadata()接受“schema”和“quote_schema”参数,这些参数将应用于表或序列的相同命名参数,而这些参数的默认值为 None .

  • [schema]

    序列接受“quote_schema”参数

  • [schema]

    如果模式参数显式为“none”,则表的tometadata()将使用新表的传入元数据的“schema”。

  • [schema]

    添加了createSchema和dropschema DDL构造-它们只接受模式的字符串名称和“引号”标志。

  • [schema]

    当将默认的“模式”与元数据一起使用时,foreignkey在定位远程表时也将采用“默认”模式。这允许将元数据上的“schema”参数应用于任何一组表对象,否则这些表对象就没有“schema”。

  • [schema]

    一个“has-schema”方法已经在方言上实现,但到目前为止只在PostgreSQL上工作。尊敬的曼里奥·佩里洛。

    References: #1679

postgresql

  • [postgresql] [feature]

    已将create_类型的构造函数参数添加到pg.enum。如果为false,则不会作为表创建/删除事件的一部分执行创建/删除或类型检查;只有直接调用的create()/drop)()方法才能执行此操作。帮助使用Alembic“脱机”脚本。

  • [postgresql] [bug]

    PostgreSQL方言表示在创建/删除序列期间处理了特定名称的枚举。这允许创建/删除序列在不调用“checkfirst”的情况下工作,也意味着在启用“checkfirst”的情况下,它只需要检查一次枚举。

    References: #2311

mysql

  • [mysql] [bug]

    Unicode调整允许最新的pymysql(post 0.4)在python 2上100%通过。

mssql

  • [mssql] [feature]

    解除了对SQL Server保存点的限制。所有的测试都通过使用它,但是还不知道是否有更深层次的问题。

    References: #822

  • [mssql] [bug]

    修复了没有在mssql上正确实现的with_hint()功能-通常用于“with(nolock)”提示(您无论如何都不应该使用它!请改用快照隔离:)

    References: #2336

  • [mssql] [bug]

    使用新的pyodbc版本检测“需要十进制修复”选项。

    References: #2318

  • [mssql] [bug]

    在SQL Server 2000上,不要将“表名”强制转换为nvarchar。然而,大多数情况下,要使pyodbc与freetds 0.91完全兼容,需要什么样的咒语。

    References: #2343

  • [mssql] [bug]

    检索索引名称列表和这些索引中的列名称时,解码传入值。

    References: #2269

misc

  • [feature] [ext]

    向“transformer”的混合文档中添加了一个示例,这个混合文档返回一个可调用的查询转换,并与一个定制的comparator结合使用。对用_Transformation()调用的查询使用新方法。这里的用例是相当实验性的,但是只向查询添加了一行代码。

  • [bug] [pyodbc]

    基于pyodbc的方言现在可以准确地分析pyodbc,直到观察到pyodbc字符串为止,包括诸如“py3-3.0.1-beta4”之类的gem。

    References: #2318

  • [bug] [ext]

    当不存在“默认”编译处理程序而不是keyError时,@compiles decorator将引发一条信息性错误消息。

0.7.3

Released: Sun Oct 16 2011

general

  • [general]

    调整了内部用于解决导入周期的“importlater”机制,以便 __import__ 在导入sqlAlchemy或sqlAlchemy.orm时完成,从而避免使用 __import__ 应用程序启动新线程后,修复。也在0.69.

    References: #2279

orm

  • [orm]

    改进了query.join(),使“左边”可以更灵活地成为非ORM可选的,例如子查询。放置在select_From()中的可选项现在将用作左侧,这比隐式使用映射实体更受欢迎。如果由于缺少外键而连接仍然失败,则错误消息将包含此详细信息。感谢Brianrhude对IRC的测试用例。

    References: #2298

  • [orm]

    在_soft_rollback()会话事件后添加。无论何时调用rollback(),无论是否发生实际的DBAPI级回滚,此事件都无条件激发。此事件专门设计为当session.is_active为true时,允许在回滚后继续对会话的操作。

    References: #2241

  • [orm]

    在orm.aliased()结构中添加了“adapt_on_names”布尔标志。允许别名()构造将ORM实体链接到包含特定属性的聚合或其他派生形式的可选实体,前提是名称与实体映射列的名称相同。

  • [orm]

    在column_property()中添加了expire_on_flush=false的新标志expire,标记那些原本被认为是“只读”的属性,即从SQL表达式派生的属性,以便在刷新发生后保留其值,包括父对象本身是否参与了更新。

  • [orm]

    增强了ORM中的工具以支持PY3K的“所需的kw参数”的新参数样式,即fn(a,b, * ,c,d),fn(a,b, * ARGs,C,D)。映射对象的参数签名 __init__ 将保留方法,包括所需的kw规则。

    References: #2237

  • [orm]

    修复了工作单元中的错误,即在高度互联的模式中检测类之间的“循环”不会产生确定的结果;因此,有时会缺少一些应被视为循环的节点,从而导致进一步的问题。注意这个bug也在0.6中;目前没有反向端口。

    References: #2282

  • [orm]

    修正了从0.6开始的各种同义词()相关回归:

    • 现在可以用同义词来做同义词了。

    • 可以将针对relationship()生成的同义词传递给query.join()、发送给query.options()的选项、按名称传递给query.with_parent()。

  • [orm]

    修正了这样一个错误,即mapper.order_by属性将在子查询的“内部”查询中被忽略。.同样在0.6.9中。

    References: #2287

  • [orm]

    discard()在内部使用dict.pop(,none),而不是“del”,以避免在不确定GC拆卸期间出现keyError/warning。

    References: #2267

  • [orm]

    修正了新的复合重写中的回归,其中deferred=true选项由于缺少导入而失败

    References: #2253

  • [orm]

    将“comparator_factory”参数恢复为composite(),在0.7发布时删除。

    References: #2248

  • [orm]

    修复了query.join()中的错误,该错误将发生在复杂的多个重叠路径方案中,同一个表可以联接两次。谢谢 much 为戴夫·维泰克提供了完美的解决方案。

    References: #2247

  • [orm]

    查询将在切片为“无”时将偏移量转换为零,这样就不会调用不必要的偏移子句。

  • [orm]

    修复了当新映射器上的关系将在第一个映射器上建立backref时,映射器无法完全更新内部状态的边缘情况。

  • [orm]

    修正了一个错误,如果重新定义了一个多对一的关系,那么Lazyload就会碰到一个失败的关系。不适用于0.6.9。

    References: #2260

  • [orm]

    调用class_mapper()并传入一个不是“类型”的对象(即一个可能被映射的类),现在会引发一个信息性的argumentError,而不是unmappedclasserror。

    References: #2196

  • [orm]

    新的事件挂钩,mapperEvents.after_configured()。在configure()步骤完成且映射器实际上受到影响后调用。理论上,除非在已经使用现有映射之后构建新映射,否则每个应用程序都会调用一次此事件。

  • [orm]

    当一个打开的会话被垃圾收集时,当它们被添加到一个新的会话中时,它中仍然存在的对象会被认为是分离的。这是通过额外的检查来完成的,检查前一个“会话密钥”实际上不存在于会话池中。

    References: #2281

  • [orm]

    新的声明性功能:

    • _声明最后一个方法,为类方法建立一个事件监听器,当映射器完成最后一个“配置”步骤时将调用该类方法。

    • __abstract__ 旗帜。当类上存在此标志时,类将不会被映射。

    • 新助手类ConcreteBase、AbstractConcreteBase。允许使用声明性的具体映射,当调用“配置”映射器步骤时,声明性将自动设置“多态联合”。

    • 映射器本身具有半私有方法,允许在配置映射器之后将可选的“with_多态性”分配给它。

    References: #2239

  • [orm]

    当子类的基将@declared attr用于常规列时,declarative将发出警告-此属性不会传播到子类。

    References: #2283

  • [orm]

    用于将映射实例与其所属会话链接的整数“id”现在由序列生成函数而不是id(session)生成,为了消除回收id()值导致错误结果的可能性,无需在会话中实际检查该对象。

    References: #2280

  • [orm]

    行为改进:空的连词,如和和或,将在封闭连词的上下文中变平,即和(x,或)将产生“x”,而不是“x和()”。

    References: #2257

  • [orm]

    修正了select()元素计算“from”列表的错误。“From”计算现在被延迟,因此,如果构造使用的列对象尚未附加到表,但后来与表关联,则它将使用表作为From生成SQL。这一变化对如何计算FROM列表和“关联”集合的机制影响相当深,因为一些“子句自适应”方案(在ORM中使用非常频繁)依赖于这样一个事实,即“FROM”集合通常在自适应完成之前缓存。返工允许随时清除和重新生成“froms”集合。

    References: #2261

  • [orm]

    修正了这样一个错误:如果传递了一个可选的,那么select的方法将失败。也在0.69.

    References: #2270

examples

  • [examples]

    调整dictlike-polymorphic.py示例以应用cast,使其适用于pg和其他数据库。也在0.69.

    References: #2266

engine

  • [engine]

    所有池类中的recreate()方法都使用 self.__class__ 在子类化的情况下,获取要生成的池的类型。注意,通常不需要对池进行子类划分。

    References: #2254

  • [engine]

    对多参数语句日志记录的改进是,绑定参数集的长列表将被压缩,并显示正在进行的压缩。异常消息使用相同的改进格式。

    References: #2243

  • [engine]

    将可选的“sa_pool_key”参数添加到pool.manage(dbapi.connect()中,这样就不需要序列化参数。

  • [engine]

    create_engine()支持的入口点解析现在支持在内置或入口点解析方言的基础上,使用标准的“+”符号对单个DBAPI驱动程序进行解析-在解析为入口点之前,它被转换为“.”。

    References: #2286

  • [engine]

    为connect中的“返回unicode检测”步骤添加了一个异常catch+警告,允许在nvarchar上崩溃的数据库继续初始化,假设没有实现nvarchar类型。

    References: #2299

schema

  • [schema]

    将column.copy()修改为使用_constructor(),默认为 self.__class__, 以便创建新对象。这样可以更容易地支持子类化列。

    References: #2284

  • [schema]

    在SchemaItem类中添加了稍微好一点的repr。注意,这里的repr不能完全支持“repr是构造函数”的思想,因为模式项可以是非常深的嵌套/循环的,有些东西初始化得很晚等等。

    References: #2223

postgresql

  • [postgresql]

    在index()中添加了“postgresql-using”参数,生成using子句来指定pg.的索引实现。感谢Ryan P.Kelly的帮助。

    References: #2290

  • [postgresql]

    使用postgresql+psycopg2方言时添加了client_encoding参数来创建_engine();使用connect时的值调用psycopg2 set_client_encoding()方法。

    References: #1839

  • [postgresql]

    修复了pg 9中相同的修改索引行为影响重命名列上的主键反射的相关错误。也在0.69.

    References: #2141, #2291

  • [postgresql]

    表的反射函数,序列不再区分大小写。名称只能在大小写上有所不同,并且将正确区分。

    References: #2256

  • [postgresql]

    使用原子计数器作为服务器端光标名称的“随机数”源;在极少数情况下报告了冲突。

  • [postgresql]

    缩小了在当前搜索路径中用架构反映外键引用表时所做的假设;只有当一个显式架构与引用表(也有显式架构)的架构实际匹配时,才会将该显式架构应用于被引用表。以前假设“当前”模式与完整搜索路径同义。

    References: #2249

mysql

  • [mysql]

    创建表会将collate选项放在charset之后,这似乎是MySQL关于它是否实际工作的任意规则的一部分。也在0.69.

    References: #2225

  • [mysql]

    在索引结构中添加了mysql_-length参数,为索引指定了“length”。

    References: #2293

sqlite

  • [sqlite]

    确保对从数据库分析的非法日期/时间/日期时间字符串引发相同的ValueError,而不管是否使用C扩展。

mssql

  • [mssql]

    更改以尝试使用pyodbc支持freetds 0.91。这包括当检测到freetds 0.91时,字符串绑定作为python unicode对象发送,以及一个强制转换(?作为nvarchar)用于检测表。但是,我会继续将pyodbc+freetds 0.91的行为描述为相当糟糕的行为,仍然有许多查询(如反射中使用的查询)会导致Linux上的核心转储,并且它在OSX上根本不可用,内存错误比比皆是,而且只是简单地破坏了unicode支持。

    References: #2273

  • [mssql]

    从0.8开始,比较标量SELECT和值时=/!=的行为将不再生成IN/NOT IN;此行为有点过于繁重(使用 in_() 如果您想要发出IN),现在会发出一条弃用警告。为了立即获得第0.8行为并删除警告,https://www.sqlalchemy.org/docs/07/dialects/mssql.html#scalar-select-comparisons提供了一个编译器配方来覆盖VisuesBinary()的行为。

    References: #2277

  • [mssql]

    “0”被接受为limit()的参数,它将产生“top 0”。

    References: #2222

oracle

  • [oracle]

    修复了zxjdbc方言的返回结果代理。从0.6回归。

    References: #2272

  • [oracle]

    字符串类型现在在Oracle上生成varchar2,建议将其作为默认varchar。在Oracle方言中也添加了显式varchar2和nvarchar2。使用nvarchar仍然会生成“nvarchar2”-Oracle上没有“nvarchar”-这仍然是“大写类型总是给出正确的”策略的一个轻微破坏。varchar仍然生成“varchar”,与策略保持一致。如果Oracle曾经将“varchar”定义为它们声称的不同的东西(imho,这永远不会发生),那么类型将是可用的。

    References: #2252

misc

  • [types]

    超出“precision”和“asdecimal”的基本float类型的额外关键字参数将被忽略;在此处添加了一个折旧警告,并添加了与

    References: #2258

  • [ext]

    sqlsoup将不包括在sqlAlchemy的0.8版本中;虽然有用,但我们希望将sqlAlchemy本身集中在一个ORM使用范例上。sqlsoup有望很快被第三方项目取代。

    References: #2262

  • [ext]

    在AssociationProxy中添加了本地属性、远程属性、属性访问器,从而可以快速访问类级别的代理属性。

    References: #2236

  • [ext]

    将关联代理字典上的update()方法更改为使用duck类型方法,即检查“keys”,以区分update()和update((a,b))。以前,传递一个以元组为键的字典会被误解为序列。

    References: #2275

0.7.2

Released: Sun Jul 31 2011

orm

  • [orm]

    功能增强:联接和子查询加载现在将遍历已存在的相关对象和集合,以在定义的渴望加载的整个范围内搜索未填充的属性,以便无条件地通过映射或查询选项指定的渴望加载在整个深度内进行,填充尚未填充。以前,如果相关的对象或集合已经存在,从而导致不一致的行为,则此遍历将停止(尽管对于已经加载的图形,此遍历将保存在加载/循环上)。对于子查询加载,这意味着子查询加载所发出的附加select语句将无条件地调用,无论现有图形中已经存在多少(因此存在争议)。当查询是属性启动的Lazyload的结果时,“停止”的先前行为仍然有效,否则,当重复遇到同一相关对象时,“n+1”样式的收集迭代可能会变得不必要的昂贵。还有一个尚未公开的生成查询方法_invoke_all_chengs(),它选择旧的/新的行为。

    References: #2213

  • [orm]

    当ORM中的“replacement traversal”改变可选择项以与事物的别名(即子句适应)相对应时,它的一个重做包括了一个修正,即针对联接的表结构对multiple嵌套any()/has()构造进行修正。

    References: #2195

  • [orm]

    修复了在子表上具有join条件的relationship()上将join.join()+aliased=true从已联接的inh结构转换为自身的错误,该错误会不适当地将lead实体转换为已联接的实体。也在0.69.

    References: #2234

  • [orm]

    修正了从0.6开始的回归,其中session.add()针对集合中不包含任何内容的对象将引发内部异常。将此恢复为0.6的行为,即接受“无”,但显然不存在任何内容。理想情况下,不存在或在append()上的集合至少应发出一个警告,该警告将被考虑为0.8。

    References: #2205

  • [orm]

    在无法找到行的对象上加载deferred()属性将引发objectDeletedError,而不是稍后失败;改进了objectDeletedError中的消息,使其除了简单的“删除”之外,还包含其他条件。

    References: #2191

  • [orm]

    修正了从0.6开始的回归,当Lazyload发出时,基于relationship()的某些属性上的get history操作将失败;在某些条件下,这可能在flush()内触发。感谢为此提交了大量测试的用户。

    References: #2224

  • [orm]

    修复了仅在python 3中明显的错误,如果持久对象主键不是单个整数,那么在刷新期间对持久+挂起对象进行排序将产生非法比较。也在0.6

    References: #2228

  • [orm]

    修正了这样一个错误:如果与将多个实体组合在一起的列表达式相比,query.join()使用的源子句将不一致。也在0.6

    References: #2197

  • [orm]

    修正了一个错误,如果一个映射的类重新定义为非标准的东西,这是一个支持的用例,因为sqla不应该参考这些,如果类是“复合”(即非单个实体)结果集的一部分,将咨询方法。也在0.69.

    References: #2215

  • [orm]

    向mapper添加了public属性“.validators”,这是一个用@validates decorator修饰的所有属性的不可变字典视图。由Stefano Fontanelli提供

    References: #2240

  • [orm]

    修复了导致SQL在以下情况下爆炸的细微错误:列属性()对子查询+joinedload+limit+按列属性()排序。0.6

    References: #2188

  • [orm]

    使用父级以及对父级使用“动态”关系时产生的联接条件将生成唯一的bindparams,而不是错误地重复相同的bindparam。.也在0.6.9中。

    References: #2207

  • [orm]

    向mapper.polymorphic_添加了与接收relationship.order_by、foreign_key、remote_side等的用户参数时使用的相同的“仅列”检查。

  • [orm]

    修复了将列表达式与query()进行比较时,不会在基础select语句上作为_scalar()调用以生成标量子查询的错误,这种情况在query().subquery()上调用时会发生。

    References: #2190

  • [orm]

    修复了从同名超类继承的类由于不必要地在_decl_class_注册表中查找名称而失败的声明性错误。

    References: #2194

  • [orm]

    修复了查询中的“无语句条件”断言,如果在调用from_statement()之后调用了生成方法,则该断言将尝试引发。也在0.69.

    References: #2199

examples

  • [examples]

    修复了examples/versioning测试运行程序以不依赖sqlachemy测试库,必须从examples/versioning中运行nosetest以绕过setup.cfg破坏它。

  • [examples]

    调整到示例/版本控制,以便在多级继承情况下选择正确的外键。

  • [examples]

    修复了属性shard示例以检查0.7样式中的bind-param是否可正确调用。

engine

  • [engine]

    如果commit()失败,connection.begin()提供的上下文管理器将发出rollback(),而不仅仅是在发生异常时。

  • [engine]

    在python 2.6及更高版本中使用urllib.parse_qsl(),没有关于cgi.parse_qsl()的反预测警告

    References: #1682

  • [engine]

    添加了mixin类sqlachemy.ext.dontwrapmixin。此类型的用户定义异常在语句执行上下文中发生时,永远不会包装在StatementException中。

  • [engine]

    StatementException包装将在消息中显示原始的异常类。

  • [engine]

    如果方言知道这是一个潜在的“可重试”条件,则引发dbapi.error的connect失败会将错误转发到dialect.is搋disconnect()并设置“connection搋invalidated”标志。目前只实现了Oracle ORA-01033。

    References: #2201

sql

  • [sql]

    修复了两个涉及可选列对应关系的细微错误,一个是重复具有相同标签的子查询,另一个是当标签被“分组”并丢失时。影响。

    References: #2188

schema

  • [schema]

    新特性:在所有类型上都有_variant()方法。生成variant()的实例,这是一个特殊的typecorator,它将根据使用的方言选择不同类型的用法。

    References: #2187

  • [schema]

    当foreignkeyconstraint引用父级中找不到的列名时,添加了一条信息性错误消息。也在0.69.

  • [schema]

    修复了旧的append ddl_listener()函数的自适应意外传递的错误。 * *从千瓦到桌子事件。table不获取kws,0.6中的元数据事件将获得“tables=someCollection”,此行为将被保留。

    References: #2206

  • [schema]

    修复了如果类型没有“关联”值,表上的“自动增量”检测将失败的错误,特别是在使用typeengine作为“impl”的站点上使用uuid示例时会发生这种情况。

  • [schema]

    向typeengine对象添加了一个改进的repr(),该对象只显示位置化的构造函数参数或偏离默认值的Kwarg。

    References: #2209

postgresql

  • [postgresql]

    在索引中添加了新的“postgresql-ops”参数,允许为索引列指定postgresql操作符类。尊敬的菲利普兹兹涅夫斯基。

    References: #2198

mysql

  • [mysql]

    修复了将ansi中性引号“'”用于xa命令而不是“'”的oursql方言。.同样在0.6.9中。

    References: #2186

sqlite

  • [sqlite]

    sqlite方言不再去掉反射默认值的引号,从而允许往返创建表工作。这与其他方言是一致的,它们也保持默认值的确切形式。

    References: #2189

mssql

  • [mssql]

    调整了pyodbc方言,以便在检测到“easysoft”Unix驱动程序时将绑定值作为字节而不是Unicode传递。这与使用freetds时的行为相同。如果在某些情况下传递python单代码,那么easysoft似乎会出现segfault。

oracle

  • [oracle]

    添加了ORA-00028以断开代码,使用cx_oracle_error.code获取代码。也在0.69.

    References: #2200

  • [oracle]

    添加了ORA-01033以断开连接代码,在连接事件期间可以捕获这些代码。

    References: #2201

  • [oracle]

    修复了未生成正确DDL的oracle.raw类型。也在0.69.

    References: #2220

  • [oracle]

    添加了当前保留字列表。也在0.69.

    References: #2212

  • [oracle]

    修正了可变扩展中的错误,如果同一类型在一个映射中使用了两次,则第一个映射以外的属性将不会被检测到。

  • [oracle]

    修正了可变扩展中的错误,如果不设置任何类型或不设置相应的类型,则会引发错误。现在不接受为所有属性分配“无”,非法值引发ValueError。

0.7.1

Released: Sun Jun 05 2011

general

  • [general]

    为python bug 7511添加了一个解决方法,其中C扩展构建失败不会在Windows 64位+VC Express上引发适当的异常。

    References: #2184

orm

  • [orm]

    现在允许在自引用关系上使用“删除孤立项”级联-这是因为sqla 0.7不再在ORM级别强制执行“父级不带子级”;此检查留给外键为空。有关

    References: #1912

  • [orm]

    修复了新的“可变”扩展以正确地将事件传播到子类;也不要为子类创建多个事件侦听器。

    References: #2180

  • [orm]

    修改在刷新时未检测到“标识”键时出现的消息文本,以包括列未设置为正确检测自动增量的常见原因。在0.6.

    References: #2170

  • [orm]

    修复了事务级别“已删除”集合无法清除清除清除状态的错误,如果这些状态后来成为暂时状态,则会引发错误。在0.6.

    References: #2182

engine

  • [engine]

    在从不为人所知并且是多余的连接/引擎上取消架构/面向SQL的方法:reflectTable()、create()、drop()、text()、engine.func

  • [engine]

    已调整rowproxy结果行的uu contains_uu()方法,使内部不会生成异常引发;nosuchColumnError()也将生成其消息,无论是否可以将列构造强制为字符串。在0.6.

    References: #2178

sql

  • [sql]

    修正了metadata.reflect(bind)关闭作为bind参数传递的连接的错误。从0.6回归。

  • [sql]

    简化了select确定其“.c”集合中的内容的过程。行为相同,但传递给select([])的原始子句列表()现在将扩展到其单个列元素中,而不是被忽略。

postgresql

  • [postgresql]

    一些关于数字数组的单元测试修复,匹配操作符。修复了一个潜在的浮点不准确问题,目前对match运算符的某些测试仅在面向en的区域内执行。.也在0.6.8中。

    References: #2175

mysql

  • [mysql]

    在安装在Windows上的MySQL上,单元测试100%通过。

  • [mysql]

    删除了“调整大小写”步骤,该步骤在Windows上用混合大小写名称反射MySQL上的表时会失败。在对Windows MySQL服务器进行了一些试验后,我们发现这一步骤并不能真正帮助解决这个问题;MySQL也不会在非Windows平台上返回具有适当大小写的FK名称,并且删除这一步骤至少会使反射行为更像在其他操作系统上那样。这里已经考虑了一个警告,但是很难确定在什么情况下可以提出这样的警告,所以现在就把它放在一边,而是添加了一些文档。

    References: #2181

  • [mysql]

    如果使用mysqldb且dbapi不提供constants.client模块,则支持行数将设置为false。

sqlite

  • [sqlite]

    当调用“pragma read_uncommitted”以确定连接时的当前隔离模式并默认为可序列化时,从cursor.fetchone()接受none;这将支持没有此功能的sqlite 3.3.0之前的版本。

    References: #2173

0.7.0

Released: Fri May 20 2011

orm

  • [orm]

    0.7B4中引入的固定回归!!)其中query.options(someoption(“不存在的名称”))将无法引发错误。此外,还增加了额外的错误捕获功能,用于在选项尝试构建基于列的元素时,进一步修复了在

    References: #2069

  • [orm]

    query.count()发出“count(*)”而不是“count(1)”。

    References: #2162

  • [orm]

    当from_self()、union()或其他“select from myself”操作时,对查询子句自适应进行微调,以便将简单的SQL表达式元素添加到filter()、order_by()等,这些元素出现在嵌套的“from myself”查询中。 will 以ORM表达式元素同样的方式进行调整,因为这些元素不容易访问。

    References: #2155

  • [orm]

    修正了“自引用”关系的确定会失败的错误,没有与自身相关联的inh子类的解决方法,或与在联接条件下子类中没有cols的子类相关联的inh子类的解决方法。在0.6.

    References: #2149

  • [orm]

    在确定父类和子类之间的继承条件时,mapper()将忽略不相关表的未配置外键,但对于继承表的未解析列和表名,它将照常引发。这是对以前已应用于声明性的行为的增强概括。0.6.8有一个更保守的版本,它不会从根本上改变连接条件的确定方式。

    References: #2153

  • [orm]

    当给定实体不是单个、完整类实体或映射器(即列)时,调用query.get()是一个错误。这是0.6.8中的折旧警告。

    References: #2144

  • [orm]

    修正了在某些情况下可能出现的一个潜在的键错误

    References: #2148

  • [orm]

    添加了query.with_session()方法,将query切换为使用其他会话。

  • [orm]

    水平分片查询应根据每个连接使用执行选项

    References: #2131

  • [orm]

    非主映射器将继承主映射器的标识类。这样,针对通常在继承映射中的类建立的非主映射将产生与主映射器的标识映射兼容的结果(也在0.6.8中)。

    References: #2151

  • [orm]

    已修复为“无法对目标列“q”执行同步规则;映射器“x”未映射此列”发出的错误消息,以引用正确的映射器。.也在0.6.8中。

    References: #2163

  • [orm]

    polymorphic_union()获取“cast_nulls”选项,在呈现标记的空列时禁用cast的用法。

    References: #1502

  • [orm]

    根据出现的多态联合列表中的第一个表/可选择表,多态联合()以原始表顺序呈现列。(这本身就是一个无序的映射,除非您传递一个有序的ICT)。

  • [orm]

    修正了当使用日志记录时,映射器映射到匿名别名的错误,因为别名名中有未捕获的%登录。在0.6.

    References: #2171

examples

  • [examples]

    删除了古老的“多态关联”示例,并替换为使用声明性混合的一组更新的示例,“通用关联”。每个都提供了一个可选的表布局。

sql

  • [sql]

    修复了将select()的标签与另一个标签嵌套在一起会产生不正确的导出列的错误。除其他外,这将破坏ORM列_property()对另一列_property()的映射。0.0.8

    References: #2167

  • [sql]

    更改了在确定联接条件时的处理方法,以便只考虑两个给定表之间的外键错误。也就是说,T1.join(t2)将报告涉及“T1”或“t2”的FK错误,但涉及“t3”的任何内容都将被跳过。这会影响join()以及ORM关系和继承条件逻辑。

  • [sql]

    对执行过程内部的错误处理进行了一些改进,以确保在发生非常不寻常的DBAPI错误时自动关闭连接。

  • [sql]

    metadata.reflect()和reflection.inspector()依赖GC关闭内部获取的连接,修复了这一问题。

  • [sql]

    添加了对何时将column.name指定为空字符串的显式检查

    References: #2140

  • [sql]

    修正了一个错误,如果将fetchedValue传递给列服务器update,它就不会分配其父“column”,从而为所有列默认分配模式增加了测试覆盖率。也在0.68

    References: #2147

postgresql

  • [postgresql]

    修复了psycopg2方言中的psycopg2_版本解析。

  • [postgresql]

    修正了影响pg 9的错误,如果对名称已更改的列进行索引反射,则会失败。.也在0.6.8中。

    References: #2141

mssql

  • [mssql]

    修复了MSSQL方言中的错误,即应用于模式限定表的别名将泄漏到封闭的select语句中。在0.6.

    References: #2169

misc

  • [no_tags]

    本节记录了从0.7b4到0.7.0的更改。有关SQLAlChemy0.7中新增功能的概述,请参阅https://docs.sqlalchemy.org/en/latest/changelog/migration_07.html

  • [documentation]

    从ext.mutable文档中删除了“collections.mutablemapping”abc的用法,因为它的用法不正确,在任何情况下都使示例更难理解。

    References: #2152

  • [ext]

    修复了sqlacalchemy.ext.mutable扩展中的错误,其中 None 处理不当,更换事件处理不当。

    References: #2143

0.7.0b4

Released: Sun Apr 17 2011

general

  • [general]

    更改为更改的格式,此文件。格式更改已应用于0.7版本。

  • [general]

    “-declarative”更改现在将直接列在“-orm”部分下,因为这些更改是密切相关的。

  • [general]

    0.5系列更改已移动到文件更改_pre_06,替换更改_pre_05。

  • [general]

    0.6.7及0.6系列中后续版本的changelog现在只在0.6分支中的changes文件中列出。在0.7更改文件(即此文件)中,所有0.6更改都列在0.7节中,其中也应用了这些更改(因为所有0.6更改都在0.7中)。如果在实现/行为方面存在任何差异,则此处适用于0.6版本的更改将按原样记录。

orm

  • [orm]

    在调用query.update()、query.delete()时,对“evaluate”和“fetch”评估进行了一些修复。在所有情况下,记录的检索都是在自动刷新之后,以及在发出更新/删除之前进行的,以防止出现未刷新的数据以及评估期间失败的过期对象。

    References: #2122

  • [orm]

    重写了尝试对父类型不具有多态性的子类进行刷新时引发的异常。

    References: #2063

  • [orm]

    当查询选项找不到目标实体时,还会有更多的措辞调整。说明路径必须来自其中一个根实体。

  • [orm]

    对backrefs的状态处理进行了一些修复,通常在autoflush=false时,其中back-referenced集合无法在不进行净更改的情况下正确处理add/removes。感谢Richard Murri的测试用例+补丁。(也在0.6.7中)。

    References: #2123

  • [orm]

    在UOW中添加了检查,以检测请求更新或删除包含空值的主键值的异常情况。

    References: #2127

  • [orm]

    一些对历史属性的改进。可能在0.8中还有更多的更改悬而未决,但目前历史已经被修改,这样标量历史就不会有为非当前值填充“无”的“副作用”。这使得一个稍微好一点的能力来区分一个无集和一个没有实际变化的影响。

    References: #2127

  • [orm]

    如果使用了from_self(),则“having”子句将从内部复制到外部查询;特别是,这将中断0.7样式的count()查询。(也0.0.7)

    References: #2130

  • [orm]

    query.execution_options()方法现在将这些选项传递给连接,而不是select语句,以便可以使用所有可用选项,包括隔离级别和已编译缓存。

    References: #2131

engine

  • [engine]

    C扩展现在在c python 2.x上默认启用,如果无法编译,它将回退到纯python。

    References: #2129

sql

  • [sql]

    “已编译缓存”执行选项现在在传递到select语句而不是连接时引发错误。以前它被完全忽略了。我们可能会考虑在某个时刻让这个选项在每个语句级别上工作。

    References: #2131

  • [sql]

    已还原基本类型引擎类上的“catchall”构造函数,并显示一条警告。这样,执行类似整数(11)的代码仍然可以成功。

  • [sql]

    修正了这样的回归:元数据()从解压中恢复过来并没有跟踪它现在跟踪的新事物,即序列对象集合、模式名称列表。

    References: #2104

  • [sql]

    要选择的limit/offset关键字()以及传递给select.limit()/offset()的值将强制为整数。(也0.0.7)

    References: #2116

  • [sql]

    修复了从over()子句收集的“from”子句将是itertools.chain()而不是列表的错误,导致与其他子句组合时“只能连接列表”类型错误。

  • [sql]

    修正了在over()子句中“,”的错误用法,该子句位于“partition”和“order by”子句之间。

    References: #2134

  • [sql]

    PrimaryKeyConstraint Now函数的附加事件之前/之后,为所有约束类型的附加事件之前/之后添加了测试。

    References: #2105

  • [sql]

    向表达式lib添加了显式的true()/false()构造-强制规则将截获“false”/“true”到这些构造中。在0.6中,构造通常直接转换为字符串,这在0.7中不再被接受。

    References: #2117

schema

  • [schema]

    表上的“useexisting”标志已被一对新标志“keep_existing”和“extend_existing”取代。扩展“existing”等同于“useexisting”-返回现有表,并添加其他构造函数元素。使用“keep_existing”返回现有表,但不添加其他构造函数元素-这些元素仅在新创建表时应用。

    References: #2109

postgresql

  • [postgresql]

    现在支持python 3的psycopg2。

  • [postgresql]

    修正了使用PG8000时对精确数字的支持。

    References: #2132

sqlite

  • [sqlite]

    修复了将外键反射创建为“references<tablename>”而没有col name的错误。(也0.0.7)

    References: #2115

oracle

  • [oracle]

    使用需要对列本身或名称生成的绑定参数使用引号的列名,例如具有特殊字符、下划线、非ASCII字符的名称,现在可以在与cx_Oracle交谈时正确地转换绑定参数键。(也0.0.7)

    References: #2100

  • [oracle]

    Oracle方言添加了use_binds_for_limits=false create_engine()标志,将以内联方式呈现限制/偏移值,而不是作为绑定,以修改Oracle使用的执行计划。(也0.0.7)

    References: #2116

misc

  • [types]

    real已添加到核心类型中。支持PostgreSQL、SQL Server、MySQL、SQLite。注意,添加了额外参数的SQL Server和MySQL版本仍然可以从这些方言中获得。

    References: #2081

  • [types]

    添加了@event.listens_for()decorator,给定target+event name,将修饰函数作为侦听器应用。

    References: #2106

  • [pool]

    断言池现在存储跟踪,指示获取当前签出连接的位置;此跟踪在第二次并发签出时引发的断言中报告;由Gunnlaugur Briem提供

    References: #2103

  • [pool]

    “pool.manage”功能不再使用pickle来散列每个池的参数。

  • [documentation]

    记录的sqlite日期/时间/日期时间类型。(也0.0.7)

    References: #2029

  • [documentation]

    修复了可变扩展文档以显示正确的类型关联方法。

    References: #2118

0.7.0b3

Released: Sun Mar 20 2011

general

  • [general]

    在pypy下运行时,对单元测试进行了大量的修改(由alex gaynor提供)。

orm

  • [orm]

    已将基础方法更改为query.count()。现在query.count()在所有情况下都是:

    查询。

    来自u self(func.count(literal_column('1'))。标量()

    即,“select count(1)from(<full query>)”。这在所有情况下都会生成一个子查询,但极大地简化了之前尝试执行的所有猜测count(),在许多情况下,这仍然会失败,特别是在涉及联接表继承和其他联接时。如果为非常简单的计数生成的子查询确实是一个问题,请使用查询(func.count())作为优化。

    References: #2093

  • [orm]

    在迭代过程中,对标识图的一些更改涉及到罕见的weakref回调。互斥体已被删除,因为它显然会导致可重入(即在一个线程中)死锁,可能是在GC在迭代点收集对象以获得更多内存时。希望“Dictionary changed during iteration”(在迭代过程中更改的字典)非常罕见,因为迭代方法在内部获取单个values()调用中的完整对象列表。注0.6.7在这里有一个更保守的修正,它仍然保持互斥的位置。

    References: #2087

  • [orm]

    即使给定的对象在内存中没有任何属性间引用(这是0.5和更早版本中的行为),对工作单元的调整也会导致它按relationship()依赖项排序,因此仅使用外键/主键集的父/子对象刷新将成功。这虽然仍然保持0.6以上,但不会在flush中生成大量无用的内部依赖结构,这些结构实际上与当前flush中的状态不符。

    References: #2082

  • [orm]

    在父实体不完全存在的情况下,与使用加载程序选项(通常不正确)对仅列实体进行查询时发出的错误消息进行了改进。

    References: #2069

  • [orm]

    修正了query.options()中的错误,即使用字符串键应用于Lazyload的路径可能会在错误的实体上重叠相同的命名属性。注0.6.7对此有一个更保守的修正。

    References: #2098

examples

  • [examples]

    更新了关联,关联代理示例使用声明性,添加了一个新的示例dict-of-set-u with-default.py,关联代理的“pushing the envelope”示例。

  • [examples]

    烧杯缓存示例允许对query_callable()函数使用“query_cls”参数。(也0.0.7)

    References: #2090

engine

  • [engine]

    修复了断言池回归错误。

    References: #2097

  • [engine]

    指定了无效方言时,引发的异常已更改为ArgumentError。

    References: #2060

sql

  • [sql]

    为列的子类化和_make_proxy()由于构造函数上的typeerror而未能复制的情况添加了一条完整的描述性错误消息。在这种情况下,应该实现方法构造函数。

  • [sql]

    为表对象添加了新事件“column_reflect”。在反射中生成对象之前接收有关列的信息字典,并允许修改字典以控制结果列的大部分方面,包括键、名称、类型、信息字典。

    References: #2095

  • [sql]

    为了帮助“column_reflect”事件与特定的表对象(而不是表的所有实例)一起使用,可以使用新参数“listeners”(形式的元组列表(<eventname>,<fn>)将侦听器添加到表对象中,该参数是在反射过程开始之前应用于表的。

  • [sql]

    添加了新的通用函数“next_value()”,接受序列对象作为其参数,并在目标平台上呈现适当的“next value”生成字符串(如果支持)。还提供序列本身的“.next_value()”方法。

    References: #2085

  • [sql]

    func.next_value()或其他SQL表达式可以直接嵌入insert()构造中,如果隐式或显式“返回”与主键列一起使用,则新生成的值将出现在result.inserted_primary_key中。

    References: #2084

  • [sql]

    向resultProxy“返回_行”、“is_insert”(也在0.6.7中)添加了访问器

    References: #2089

postgresql

  • [postgresql]

    为PostgreSQL方言添加了保留单词。(也0.0.7)

    References: #2092

  • [postgresql]

    修正了位类型以允许“长度”参数,“变化”参数。反射也是固定的。(也0.0.7)

    References: #2073

mssql

  • [mssql]

    重写用于获取视图定义的查询(通常在使用Inspector接口时),以使用sys.sql_模块而不是信息架构,从而允许完全返回长度超过4000个字符的视图定义。(也0.0.7)

    References: #2071

firebird

  • [firebird]

    如果设置为false,则create_engine()上的“implicit_returning”标志将得到处理。(也0.0.7)

    References: #2083

misc

  • [declarative]

    论点 __mapper_args__ 这不是“hashable”,也不会被误认为是始终可hashable,可能是列参数。(也0.0.7)

    References: #2091

  • [informix]

    添加了保留的单词informix方言。(也0.0.7)

    References: #2092

  • [ext]

    水平的shard sharedsession类接受公共会话参数“query”cls作为构造函数参数,以便进一步对sharedquery进行子类化。(也0.0.7)

    References: #2090

0.7.0b2

Released: Sat Feb 19 2011

orm

  • [orm]

    修正了session.merge()调用load()事件时参数太少的错误。

    References: #2053

  • [orm]

    添加了阻止从MapperExtension或SessionExtension生成事件的逻辑,该逻辑阻止为所有未重写的方法生成“不做任何事情”事件。

    References: #2052

examples

  • [examples]

    烧杯示例现在考虑到“limit”和“offset”,在生成缓存键时,在嵌入的from子句中绑定参数(例如,当使用union()或from_self())。

sql

  • [sql]

    已将EngineeEvents事件类重命名为ConnectionEvents。由于最终用户代码从未直接访问这些类,因此这严格来说是对最终用户的文档更改。还简化了事件与引擎和内部连接的链接方式。

    References: #2059

  • [sql]

    sequence()构造通过其“metadata”参数传递metadata()对象时,将包含在metadata.create_all()和metadata.drop_all()中的create/drop语句中,包括“checkfirst”逻辑。

    References: #2055

  • [sql]

    如果有一个外键正好引用给定的列,而不仅仅是其父表,则column.references()方法现在返回true。

    References: #2064

postgresql

  • [postgresql]

    修正了从0.6开始的回归,其中smallint和bigint类型都将在整数pk列上生成serial,而不是smallint和bigserial

    References: #2065

misc

  • [declarative]

    修正了将列对象放在内联中的composite()无法初始化的回归。列对象现在可以与composite()或external内联,并通过name或object ref拉入。

    References: #2058

  • [declarative]

    修复引用旧的@classproperty name到引用@declaredattr的错误消息(也在0.6.7中)

    References: #2061

  • [declarative]

    字典的末尾 __table_args__ tuple现在是可选的。

    References: #1468

  • [ext]

    关联代理现在对任意()、has()和contains()具有正确的行为,当将多对一个标量属性代理到一对多集合时(即“典型”关联代理使用情形的相反情况)。

    References: #2054

0.7.0b1

Released: Sat Feb 12 2011

general

  • [general]

    新的事件系统,取代所有扩展、侦听器等。

    References: #1902

  • [general]

    日志功能增强

    References: #1926

  • [general]

    安装程序不再安装鼻插件

    References: #1949

  • [general]

    sys.modules中的“sqlAlchemy.exceptions”别名已删除。基本的sqla异常可通过“从sqlachemy import exc”获得。“exc”的“exceptions”别名目前仍保留在“sqlacalchemy”中,它只是没有修补到sys.modules中。

orm

  • [orm]

    更简洁的query.join形式(target,onclause)

    References: #1923

  • [orm]

    混合属性,实现/取代同义词()

    References: #1903

  • [orm]

    复合材料的重写

    References: #2008

  • [orm]

    突变事件扩展,取代“mutable=true”

  • [orm]

    默认情况下,pickleType和数组可变性已关闭

    References: #1980

  • [orm]

    简化的多态性分配

    References: #1895

  • [orm]

    不允许刷新没有父级的孤立项

    References: #1912

  • [orm]

    在autocommit=true的情况下,在提交之前调整刷新会计步骤。这允许autocommit=true与expire_on_commit=true一起正常工作,并且允许后刷新会话挂钩在与autocommit=false相同的事务上下文中操作。

    References: #2041

  • [orm]

    当集合成员、标量引用不是刷新的一部分时生成警告

    References: #1973

  • [orm]

    可以映射非“table”派生的构造

    References: #1876

  • [orm]

    查询中的元组标签名称已改进

    References: #1942

  • [orm]

    映射的列属性首先引用最特定的列

    References: #1892

  • [orm]

    映射到具有两个或多个相同命名列的联接需要显式声明

    References: #1896

  • [orm]

    映射器要求在映射的可选对象中存在多态列

    References: #1875

  • [orm]

    编译_mappers()重命名为configure_mappers(),简化了内部配置

    References: #1966

  • [orm]

    aliased()函数如果传递了一个sql fromclause元素(即不是映射类),将返回element.alias(),而不是在aliased class上引发错误。

    References: #2018

  • [orm]

    session.merge()将根据数据库的版本ID检查传入状态的版本ID,假设映射使用版本ID,并且传入状态已分配版本ID,如果它们不匹配,则会引发staledataerror。

    References: #2027

  • [orm]

    session.connection(),session.execute()接受“bind”,以允许执行/连接操作显式参与引擎的打开事务。

    References: #1996

  • [orm]

    query.join()、query.outerjoin()、chengload()、chengload_all()等不再允许属性列表作为参数(即选项( [x,y,z] )表单,自0.5起已弃用)

  • [orm]

    ScopedSession.mapper已删除(从0.5起已弃用)。

  • [orm]

    水平碎片查询将“shard_id”放在context.attributes中,通过“load()”事件可以访问它。

    References: #2031

  • [orm]

    跨多个实体的单个contains_-eager()调用将指示应该加载该路径上的所有集合,而不是要求对每个端点(从未正确记录)使用distinct contains_-eager()调用。

    References: #2032

  • [orm]

    ORM.aliased()中使用的“name”字段现在在生成的SQL语句中呈现。

  • [orm]

    session weak_instance_dict=false已弃用。

    References: #1473

  • [orm]

    异常情况下会引发异常,即集合上的追加或类似事件在父对象被取消引用后发生,这会防止父对象在会话中被标记为“脏”。是0.6.6中的警告。

    References: #2046

  • [orm]

    query.distinct()现在接受列表达式为 * args,由postgresql方言解释为distinct on(<expr>)。

    References: #1069

  • [orm]

    在flush()期间加载到“多对一”关系的附加调优。0.6.6版本的变更( [门票:2002] )要求在冲洗过程中可能出现更多“不必要”的M2O负载。已经添加了额外的加载模式,这样在这个特定用例中发出的SQL将被修剪回去,同时仍然检索刷新所需的信息,以避免遗漏任何内容。

    References: #2049

  • [orm]

    传递给attributes.get_history()的“passive”值应该是在attributes包中定义的常量之一。不推荐发送true或false。

  • [orm]

    增加了一个 name 参数 Query.subquery() ,以允许将固定名称分配给别名对象。(也0.0.7)

    References: #2030

  • [orm]

    当联接表继承映射器在本地映射表上没有主键(但在超类表上有PK)时,将发出警告。(也0.0.7)

    References: #2019

  • [orm]

    修复了这样一个错误:如果多态层次结构中的“中间”类不指定“多态”标识,那么它将没有“多态”列,从而导致刷新时出现奇怪的错误,从该目标查询时加载了错误的类。在使用单表继承时,还发出正确的where条件。(也0.0.7)

    References: #2038

  • [orm]

    修复了在包含属性或排除属性的映射中排除SQL或服务器端默认值的列将导致unmappedColumnError的错误。(也0.0.7)

    References: #1995

  • [orm]

    在异常情况下会发出警告,即集合上的追加或类似事件发生在父对象被取消引用之后,这会防止父对象在会话中被标记为“脏”。这在0.7中是一个例外。(也0.0.7)

    References: #2046

sql

  • [sql]

    添加over()函数,方法到functionElement类,生成over()构造,该构造反过来生成“窗口函数”,即“<window function>over(partition by<partition by>,order by<order by>)”。

    References: #1844

  • [sql]

    限制/偏移子句现在使用绑定参数

    References: #805

  • [sql]

    select.distinct()现在接受列表达式为 * args,由postgresql方言解释为distinct on(<expr>)。注意:通过将列表传递给 distinct 用于select()的关键字参数。

    References: #1069

  • [sql]

    select.prefix_with()接受多个表达式(即 * expr),“prefix”关键字参数select()接受列表或元组。

  • [sql]

    将字符串传递给 distinct 的关键字参数 select() 出于发出特殊mysql关键字(distinctrow等)的目的,已弃用-使用 prefix_with() 为此。

  • [sql]

    typedecorator使用主键列

    References: #2005, #2006

  • [sql]

    ddl()构造现在转义百分号

    References: #1897

  • [sql]

    table.c/metadata.tables稍作改进,不允许直接变异

    References: #1893, #1917

  • [sql]

    可调用文件传递给 bindparam() 不接受评估

    References: #1950

  • [sql]

    types.type_map现在是private,types._type_map

    References: #1870

  • [sql]

    非公共池方法加下划线

    References: #1982

  • [sql]

    添加了nulls first和nulls last支持。它作为asc()和desc()运算符的扩展实现,称为nullsFirst()和nullsLast()。

    References: #723

  • [sql]

    index()构造可以与表定义内联创建,使用字符串作为列名,作为在表外部创建索引的替代方法。

  • [sql]

    connection上的execution_options()接受“isolation_level”参数,只为该连接设置事务隔离级别,直到返回到连接池为止,用于支持该连接的后端(sqlite、postgresql)

    References: #2001

  • [sql]

    整数的typedecorator可以与主键列一起使用,各种方言的“autoincrement”功能以及“sqlite_autoincrement”标志将使基础数据库类型基于整数。

    References: #2005

  • [sql]

    当服务器默认值出现在整数pk列上时,建立了一致性。sqla不会预先获取这些,也不会返回cursor.lastrowid(dbapi)中。确保所有后端始终在result.inserted_primary_key中不返回。对于这种情况的反射,使用服务器默认值反射int pk col会将“autoincrement”标志设置为false,但在pg serial col中检测到序列默认值的情况除外。

    References: #2020, #2021

  • [sql]

    当确定result.inserted_primary_key的内容时,结果行处理器将应用于预执行的SQL默认值以及cursor.lastrowid。

    References: #2006

  • [sql]

    select的“columns子句”中存在的绑定参数现在像其他“anonymous”子句一样被自动标记,这使得它们的“type”在提取行时(如结果行处理器)具有意义。

  • [sql]

    typedecorator存在于“sqlacalchemy”导入空间中。

  • [sql]

    非DBAPI错误,发生在 execute() 现在,调用被包装在sqlachemy.exc.statementError中,并且包含SQL语句的文本和参数的repr()。这使得识别在DBAPI介入之前失败的语句执行更加容易。

    References: #2015

  • [sql]

    直接将“.bind”与子句元素关联的概念已显式移动到可执行文件,即描述表示引擎可执行构造的子句元素的mixin。这一变化是对内部组织的改进,不太可能影响任何实际使用。

    References: #2048

  • [sql]

    column.copy()与table.tometadata()中使用的一样,复制'doc'属性。(也0.0.7)

    References: #2028

  • [sql]

    在resultproxy.c扩展中添加了一些def,以便扩展在python 2.4上编译和运行。(也0.0.7)

    References: #2023

  • [sql]

    编译器扩展现在支持重写表达式的默认编译。_bindparamClause包括在insert()/update()语句的values/set子句中自动生成的绑定也将使用新的编译规则。(也0.0.7)

    References: #2042

  • [sql]

    sqlite方言现在使用 NullPool 用于基于文件的数据库

    References: #1921

  • [sql]

    作为sqlite数据库位置给出的路径现在通过os.path.abspath()规范化,这样进程中的目录更改不会影响相对文件路径的最终位置。

    References: #2036

postgresql

  • [postgresql]

    当显式序列执行派生出串行列的自动生成序列的名称时,该名称当前仅在隐式返回=false时出现,如果使用相同的逻辑postgresql,table+column name大于63个字符,则该名称现在适用。(也0.0.7)

    References: #1083

  • [postgresql]

    在“断开”异常列表中添加了一条附加的libpq消息,“无法从服务器接收数据”(也在0.6.7中)

    References: #2044

mysql

  • [mysql]

    新的DBAPI支持pymysql,这是mysql python的纯python端口。

    References: #1991

  • [mysql]

    我们的SQL方言接受create_engine()中与mysqldb相同的“ssl”参数。(也0.0.7)

    References: #2047

mssql

  • [mssql]

    字符串/unicode类型及其对应的varchar/nvarchar在未指定长度时发出“max”作为长度,这样,根据SQL Server文档,默认长度(通常为“1”)将改为“unbounded”。对于varbinary类型也会发生这种情况。

    此行为使这些类型与PostgreSQL的varchar类型更为兼容,后者在未指定长度时也同样是无边界的。

    References: #1833

firebird

  • [firebird]

    一些调整,以便银行同业拆借也得到支持。FB/Interbase版本标识被解析为(8,1,1,'Interbase')或(2,1,588,'Firebird')等结构,以便区分。

    References: #1885

misc

Previous: 0.8换热器 Next: 0.6换热器