Release: 1.4.25 | Release Date: September 22, 2021

SQLAlchemy 1.4 Documentation

0.5换热器

0.5.9

no release date

sql

  • [sql]

    修复了表达式包中错误的self_group()调用。

    References: #1661

0.5.8

Released: Sat Jan 16 2010

sql

  • [sql]

    列上的copy()方法现在支持未初始化的未命名列对象。这允许轻松创建声明性帮助器,将公共列放在多个子类上。

  • [sql]

    像sequence()这样的默认生成器可以在copy()操作中正确转换。

  • [sql]

    sequence()和其他defaultGenerator对象除了在位置上被接受之外,还被接受为列的“default”和“onupdate”关键字参数的值。

  • [sql]

    修复了一个列算术错误,该错误影响了包含独立列表达式的克隆可选项的列对应关系。此错误通常只在执行仅在0.6 via中可用的较新ORM行为时才明显,但在SQL表达式级别也更为正确。

    References: #1568, #1617

postgresql

  • [postgresql]

    extract()函数在0.5.7中有了轻微的改进,它需要更多的工作来生成正确的类型转换(在pg的extract中,类型转换似乎是非常必要的)。类型转换现在使用基于pg的日期/时间/间隔算法文档的规则字典生成。它还再次接受在0.5.7中被破坏的text()构造。

    References: #1647

firebird

  • [firebird]

    将更多错误识别为断开连接。

    References: #1646

0.5.7

Released: Sat Dec 26 2009

orm

  • [orm]

    contains_eager()现在可以处理当您说“query(parent.join(parent.someJoinedSubclass)”时自动生成的子查询,即父级联接到联接表继承子类时。以前的contains_eager()会错误地将子类表添加到单独生成笛卡尔积的查询中。在票据描述中有一个例子。

    References: #1543

  • [orm]

    现在,query.options()只传播到已加载的对象中,以备将来可能的子加载,仅限于与此类行为相关的选项,从而使由contains_erge()生成的各种不可分隔的选项不在单个实例状态中。

    References: #1553

  • [orm]

    session.execute()现在基于一个传入表达式(insert()/update()/delete()构造)定位表和映射器特定的绑定。

    References: #1054

  • [orm]

    现在,如果要合并的给定对象中的属性也为“无”,则session.merge()将正确覆盖“多对一”或useList=false属性为“无”。

  • [orm]

    修复了在合并包含空主键标识符的瞬态对象时发生的不必要的选择。

    References: #1618

  • [orm]

    传递给relation()、column_property()等的“extension”属性的可变集合不会在多个检测调用之间发生变化或共享,从而阻止将重复的扩展(如backref populators)插入到列表中。

    References: #1585

  • [orm]

    修复了对compositeproperty获取_committed_value()的调用。

    References: #1504

  • [orm]

    修复了当列列表中出现未映射的列实体时,如果调用没有清除“左”端的join(),则查询将崩溃的错误。

    References: #1602

  • [orm]

    修正了在0.5.6版中由于修正而引入的联接表子类上配置复合列时无法正确加载的错误。THX给斯科特·托伯格。

    References: #1480, #1616

  • [orm]

    多对一关系的“使用get”行为,即延迟加载将回退到可能缓存的query.get()值,现在跨连接条件工作,其中两个比较的类型不是完全相同的类,而是共享相同的“关联”(即integer和smallinteger)。还允许反射类型和非反射类型的组合使用0.5样式的类型反射,例如pgtext/text(注0.6将类型反射为其通用版本)。

    References: #1556

  • [orm]

    修复了在将cls.attribute作为值dict中的键传递并使用synchronizeu session='expire'(0.6中的“fetch”)时query.update()中的错误。

    References: #1436

sql

  • [sql]

    修复了两阶段事务中的错误,其中commit()方法没有设置完整状态,从而允许随后的close()调用成功。

    References: #1603

  • [sql]

    修正了“numeric”参数样式,这显然是InformixDB使用的默认参数样式。

  • [sql]

    select的columns子句中的重复表达式将根据每个子句元素的标识(而不是实际字符串)进行重复数据消除。这允许位置元素正确呈现,即使它们都呈现相同,例如“qmark”样式绑定参数。

    References: #1574

  • [sql]

    与连接池连接相关联的光标(即u cursorfairy)现在是代理 __iter__() 正确指向基础光标。

    References: #1632

  • [sql]

    类型现在支持“关联比较”操作,即整数/小整数是“兼容”的,或者文本/字符串、pickleType/二进制等的一部分。

    References: #1556

  • [sql]

    修复了防止别名()的别名()被克隆或改编的错误(在ORM操作中经常发生)。

    References: #1641

postgresql

  • [postgresql]

    通过新的postgres.pgdoubleprection对象添加了对反射双精度类型的支持。这是0.6中的postgresql.double_精度。

    References: #1085

  • [postgresql]

    增加了对反映间隔类型的年-月和间隔日-秒语法的支持。

    References: #460

  • [postgresql]

    更正了“has-sequence”查询,以将当前模式或显式序列声明模式考虑在内。

    References: #1576

  • [postgresql]

    修正了extract()在应用“timestamp”强制转换时将运算符优先规则应用于“::”运算符的行为-确保正确的括号化。

    References: #1611

sqlite

  • [sqlite]

    sqlite方言正确地为备用架构中的表生成创建索引。

    References: #1439

mssql

  • [mssql]

    在构造pyodbc connect参数时,将trusted connection的名称更改为trusted connection

    References: #1561

oracle

  • [oracle]

    metadata.reflect()使用的“table_name”方言函数省略了“index overflow tables”,这是Oracle在使用带有溢出的“index only tables”时生成的系统表。这些表不能通过SQL访问,也不能反映出来。

    References: #1637

misc

  • [ext]

    在构造类(即通过类级属性分配)之后,可以将列添加到联接表的声明性超类中,并且该列将向下传播到子类中。这与0.5.6中的情况相反。

    References: #1523, #1570

  • [ext]

    修正了切分示例中的一个轻微错误。比较ORM中列的等价性最好使用col1.shares_沿袭(col2)。

    References: #1491

  • [ext]

    移除未使用 load() sharedquery中的方法。

    References: #1606

0.5.6

Released: Sat Sep 12 2009

orm

  • [orm]

    修复了继承鉴别器(复合主键的一部分)在更新时失败的错误。的继续。

    References: #1300

  • [orm]

    修正了一个错误,它不允许多对多双向引用的一侧将自己声明为“VIEWONLY”

    References: #1507

  • [orm]

    添加了一个断言,阻止@validates函数或其他attributeextension加载卸载的集合,从而使内部状态可能已损坏。

    References: #1526

  • [orm]

    修正了两个实体在一个flush()中相互替换对方的主键值的错误。

    References: #1519

  • [orm]

    修正了一个模糊的问题,即在基类上具有自引用的热切负载的联接表子类将用父类的“子类”表中的数据填充相关对象的“子类”表。

    References: #1485

  • [orm]

    Relations()现在具有更大的“重写”能力,这意味着显式指定一个覆盖父类的relation()的子类将在刷新期间被接受。目前,这是为了支持具体继承设置中的多对多关系。在这个用例之外,YMMV。

    References: #1477

  • [orm]

    从relationship()中挤出了一些不必要的“lazy loads”。当集合发生变化时,如果不设置“single_parent=true”,则另一侧的多对一backref将不会触发以加载“old”值。多对一的直接分配仍然加载“旧”值,以便更新该值的backref集合,这些集合可能已经存在于会话中,从而保持0.5行为契约。

    References: #1483

  • [orm]

    修复了一个错误,即加载/刷新基于列_property()或类似属性的已联接表继承属性将无法计算。

    References: #1480

  • [orm]

    改进了对MapperProperty对象的支持,它覆盖了继承的映射器对非具体继承设置的支持-属性扩展不会随机地相互冲突。

    References: #1488

  • [orm]

    更新和删除不支持标准SQL中的ORDER BY、LIMIT、OFFSET等。如果调用了limit()、offset()、order_by()、group_by()或distinct(),则query.update()和query.delete()将引发异常。

    References: #1487

  • [orm]

    已将attributeextension添加到 sqlalchemy.orm.__all__

  • [orm]

    改进了使用非SQL/实体表达式调用query()时的错误消息。

    References: #1476

  • [orm]

    使用false或0作为多态鉴别器现在可以在基类和子类上工作。

    References: #1440

  • [orm]

    向查询添加了ENABLE_ASSERTIONS(FALSE),它禁用预期状态的常见断言-由查询子类用来设计自定义状态。有关示例,请参见https://www.sqlalchemy.org/trac/wiki/UsageRecipes/PreFilteredQuery。

    References: #1424

  • [orm]

    修复了在映射对象的 __len__() or `_ _ nonzero_uuu()`方法导致状态更改。

    References: #1501

  • [orm]

    修复了在弱/strongIdentityMap.Add()中引发的错误异常

    References: #1506

  • [orm]

    修复了query.join()中“找不到FROM子句”的错误消息,如果查询是针对纯SQL构造的,则该错误消息将无法正确发出。

    References: #1522

  • [orm]

    修正了一个假设性的问题,它将导致使用旧的多态联合函数为映射器计算错误的主键,但这是旧的东西。

    References: #1486

sql

  • [sql]

    固定column.copy()以复制默认值和onUpdates。

    References: #1373

  • [sql]

    修正了在0.5.4中引入的extract()中的一个错误,即字符串“field”参数被视为子句元素,从而在更复杂的SQL转换中导致各种错误。

  • [sql]

    一元表达式(如distinct)将其类型处理传播到结果集,从而允许进行unicode等转换。

    References: #1420

  • [sql]

    修正了在表和列中传递空dict作为“info”参数会引发异常的错误。

    References: #1482

oracle

  • [oracle]

    未截断Oracle别名的后端口0.6修复程序。

    References: #1309

misc

  • [ext]

    AssociationProxy生成的集合代理现在可以pickle。但是,用户定义的代理工厂仍然不可pickle,除非它定义 __getstate__ 和 __setstate__.

    References: #1446

  • [ext]

    如果 __table_args__ 作为不带dict参数的元组传递。改进的文档。

    References: #1468

  • [ext]

    元数据中声明的表对象现在可以在发送到primaryjoin/secondaryjoin/secondary的字符串表达式中使用-名称是从声明基的元数据中提取的。

    References: #1527

  • [ext]

    在构造类之后(即通过类级属性分配),可以将列添加到联接的表子类中。该列将一如既往地添加到基础表中,但现在映射器将重新生成其“join”以包含新列,而不是引发关于“no such column,use column_property()instead”的错误。

    References: #1523

  • [test]

    在测试套件中添加了一些示例,以便他们定期进行锻炼,并清除了一些反预测警告。

0.5.5

Released: Mon Jul 13 2009

general

  • [general]

    单元测试已经从UnitTest迁移到了Nose。有关如何运行测试的信息,请参阅readme.unittests。

    References: #970

orm

  • [orm]

    relation()的“foreign_keys”参数现在将以与primaryjoin和secondaryjoin相同的方式自动传播到backref。对于极为罕见的使用情况,如果关系()的backref配置了有意不同的“foreign_key”,则现在需要显式配置两侧(如果它们确实需要此设置,请参阅下一个注释…)。

  • [orm]

    …唯一已知的(实际上非常罕见的)用例,在向前/向后使用了不同的外键设置,一个部分指向自己列的复合外键已经得到增强,这样关系的fk->self方面就不会用于确定关系方向。

  • [orm]

    session.mapper现在 贬低 .

    如果希望将独立对象作为会话的一部分,请调用session.add()。否则,现在https://www.sqlalchemy.org/trac/wiki/UsageRecipes/SessionAwareMapper上记录了Session.mapper的DIY版本,该方法在整个0.6中将一直处于不推荐使用状态。

  • [orm]

    固定的查询能够从联接的表子类实体(即查询(subclass.foo,subclass.bar))的各个列中join()。join(<anything>)。在大多数情况下,会出现“找不到要从中联接的FROM子句”错误。在其他一些应用程序中,结果将以基类而不是子类的形式返回,因此需要调整依赖于此错误结果的应用程序。

    References: #1431

  • [orm]

    修正了一个涉及contains_erge()的bug,它将自己应用于二级(即惰性)负载,在一个特殊的罕见情况下,生成笛卡尔产品。改进了对辅助加载的query.options()的总体目标。

    References: #1461

  • [orm]

    修正了0.5.4中引入的错误,即刷新默认保持列时复合类型失败。

  • [orm]

    修正了另一个0.5.4错误,在序列化整个对象时,可变属性(即pickleType)无法正确反序列化。

    References: #1426

  • [orm]

    修正了session.is_modified()在使用同义词时会引发异常的错误。

  • [orm]

    修复了以前放回会话中的pickle对象的潜在内存泄漏,除非显式关闭会话,否则不会完全垃圾收集这些对象。

  • [orm]

    修复了pickleType和pgraray等基于列表的属性未能正确合并()的错误。

  • [orm]

    修复了非工作属性。设置“提交”值函数。

  • [orm]

    已修剪instanceState的pickle格式,这将进一步减少pickle实例的内存占用。格式应与0.5.4及以前版本的格式向后兼容。

  • [orm]

    sqlAlchemy.orm.join和sqlAlchemy.orm.outerjoin现在添加到 __all__ 在sqlacalchemy.orm.*中。

    References: #1463

  • [orm]

    修复了当将太短的复合主键值传递给get()时,查询异常引发的错误。

    References: #1458

sql

  • [sql]

    删除了execute()(包括connection、engine、session)的一个模糊特性,通过该特性可以将bindparam()构造作为键发送到params字典。这种用法是未记录的,并且是问题的核心,即由text()构造隐式创建的bindparam()对象可能与放置在params字典中的字符串具有相同的哈希值,并且在计算最终绑定参数时可能导致不适当的匹配。对这种情况的内部检查会给参数呈现的关键任务增加明显的延迟,因此行为将被删除。对于任何可能使用此功能的应用程序来说,这是一个向后不兼容的更改,但是从未记录过该功能。

misc

  • [engine/pool]

    为StaticPool实现了Recreate()。

0.5.4p2

Released: Tue May 26 2009

sql

  • [sql]

    已修复打印不基于参数或不是ExecuteMany()样式的SQL异常。

postgresql

  • [postgresql]

    已弃用硬编码时间戳函数,该函数用作func.timestamp(value)时将呈现“timestamp value”。由于PostgreSQL不允许在此上下文中使用绑定参数,因此这会在某些平台上中断。硬编码的大写字母也不合适,还有很多其他的PG类型,我们需要支持。因此,使用文本结构,即选择( ["timestamp '12/05/09'"] )

0.5.4p1

Released: Mon May 18 2009

orm

  • [orm]

    修正了0.5.4中引入的一个属性错误,当merge()与一个不完整的对象一起使用时会出现这种错误。

0.5.4

Released: Sun May 17 2009

orm

  • [orm]

    在会话/flush()方面的显著性能增强,结合大型映射器图和大量对象:

    • 从flush()进程中删除了所有的*o(n)扫描行为,即扫描整个会话的操作,包括一个非常昂贵的操作,该操作错误地假定主键值在发生变化,而事实并非如此。

      • 如果将现有的主键属性修改为新值,则保留一个可能调用完整扫描的边缘大小写。

    • 会话的“弱引用”行为现在是 full -没有对其中的映射对象或相关项/集合进行任何强引用。 __dict__. 对象中的backrefs和其他循环不再影响会话丢失对未修改对象的所有引用的能力。在刷新之前,具有挂起更改的对象仍将被强维护。

      该实现还通过移动垃圾收集项的“复活”过程来提高性能,使其仅与映射“可变”属性(即pickletype、复合属性)的映射相关。这就消除了GC进程的开销,并简化了内部行为。

      如果“可变”属性更改是对象的唯一更改,然后取消引用,则在发出更新时,映射器将无法访问其他属性状态。这可能与某些MapperExtension不同。

      更改也会影响内部属性API,但不会影响attributeextension接口或任何公开记录的属性函数。

    • 在flush()期间,工作单元不再为映射器的完整图形生成“依赖”处理器的图形,而是只为那些表示具有挂起更改的对象的映射器创建此类处理器。这在一个大型相互连接的映射器图的上下文中节省了大量的方法调用。

    • 缓存了一个浪费的“表排序”操作,该操作以前在每次刷新时发生过多次,还从flush()中删除了重要的方法调用计数。

    • 其他冗余的行为在mapper中被简化了。

    References: #1398

  • [orm]

    修改了dynamicattributeimpl上的query_cls以接受AppenderQuery的完整mixin版本,该版本允许对AppenderMixin进行子类化。

  • [orm]

    “多态鉴别器”列可能是主键的一部分,它将填充正确的鉴别器值。

    References: #1300

  • [orm]

    已修复无法计算的Evaluator为空子句。

  • [orm]

    修复了“动态”关系上的“设置集合”功能,以正确启动事件。以前,集合只能分配给挂起的父实例,否则将无法正确激发修改的事件。集合集合现在与merge()兼容,修复了。

    References: #1352

  • [orm]

    允许对用插入的描述符构造的propertyoption对象进行酸洗;以前,当对加载了基于描述符的选项的对象(如query.options(chengload(myclass.foo))进行酸洗时,会发生酸洗错误。

  • [orm]

    如果“lazy load”SQL子句与get()使用的子句匹配,但包含一些硬编码的参数,则lazy loader将不使用get()。以前,懒惰的策略会在get()中失败。理想情况下,get()将与硬编码参数一起使用,但这需要进一步的开发。

    References: #1357

  • [orm]

    与query.options()关联的mapperOptions和其他状态不再捆绑在与加载期间每个延迟/延迟加载属性关联的可调用文件中。这些选项现在只在填充实例的状态对象时与它关联一次。在大多数情况下,这消除了对每个实例/属性加载器对象的需求,从而提高了单个实例的加载速度和内存开销。

    References: #1391

  • [orm]

    修复了自动刷新干扰session.merge()的另一个位置。自动刷新在merge()期间完全禁用。

    References: #1360

  • [orm]

    修复了阻止“可变主键”依赖关系逻辑在一对一关系上正常运行的错误()。

    References: #1406

  • [orm]

    修正了0.5.3中引入的relation()中的错误,即从基类到联接表子类的自引用关系无法正确配置。

  • [orm]

    修复了使用继承映射器时出现的模糊映射器编译问题,这将导致未初始化的属性。

  • [orm]

    修复了会话弱标识映射的文档-默认值为true,指示正在使用的弱引用映射。

  • [orm]

    修正了一个工作单元问题,即如果关系()是自引用的,则被删除对象所拥有的集合中包含的项的外键属性不会设置为无。

    References: #1376

  • [orm]

    修复了查询.update()和query.delete()在处理急切加载的关系时失败的问题。

    References: #1378

  • [orm]

    现在在外键或远程集合中指定二进制PrimaryJoin条件的两列是错误的。而以前它只是胡说八道,但会以一种非确定性的方式成功。

sql

  • [sql]

    从sqla 0.6中向后移植了“compiler”扩展。这是一个标准化的接口,允许创建自定义子句元素子类和编译器。特别是,当您想要构建一个具有特定于数据库的编译的构造时,它可以作为text()的替代方案。详见扩展文档。

  • [sql]

    当绑定参数的列表大于10时,异常消息会被截断,从而防止大量的多页异常填充大ExecuteMany()语句的屏幕和日志文件。

    References: #1413

  • [sql]

    sqlalchemy.extract() 现在对方言敏感,可以跨受支持的数据库(包括sqlite)以惯用方式提取时间戳的组件。

  • [sql]

    修复了由uu子句u元素uuu()样式构造(即声明性列)构建的foreignkey上的u repr_uuuu()和其他u get colspec()方法。

    References: #1353

schema

  • [schema] [1341] [ticket: 594]

    向IdentifierPreparer类添加了一个Quote_Schema()方法,以便方言可以覆盖模式的处理方式。这使MSSQL方言能够将架构视为多部分标识符,如“database.owner”。

extensions

  • [extensions]

    修复了向声明性类添加延迟或其他列属性的问题。

    References: #1379

mysql

  • [mysql]

    如果外键引用远程架构中的表,则反射外键构造将考虑点式schema.tablename组合。

    References: #1405

sqlite

  • [sqlite]

    更正了slboolean类型,以便它正确地将1视为true。

    References: #1402

  • [sqlite]

    更正了float类型,以便在反射时正确映射到slfloat类型。

    References: #1273

mssql

  • [mssql]

    修改了savepoint逻辑的工作方式,以防止它单步执行非savepoint导向的例程。保存点支持仍然是非常实验性的。

  • [mssql]

    为包括2008版和所有以前版本的MSSQL添加了保留字。

    References: #1310

  • [mssql]

    已更正信息架构不使用基于二进制排序规则的数据库的问题。已清除信息架构,因为它现在仅由MSSQL使用。

    References: #1343

0.5.3

Released: Tue Mar 24 2009

orm

  • [orm]

    session.flush()的“objects”参数已弃用。表示父对象和子对象之间的链接的状态不支持链接一侧的“刷新”状态,而不支持另一侧的“刷新”状态,因此支持此操作会导致误导结果。

    References: #1315

  • [orm]

    现在,query实现了uu子句u element_uuu(),它生成其可选元素,这意味着可以在许多SQL表达式中接受一个查询实例,包括col.in_uu(query)、union(query1、query2)、select( [foo] )。从(查询)等中选择_。

  • [orm]

    如果需要,query.join()现在可以构造多个from子句。例如,查询(a,b).join(a.x).join(b.y)可能会说选择a。 , B. 从一个连接X,B连接Y。预加载也可以将其连接附加到那些多个From子句上。

    References: #1337

  • [orm]

    修复了动态加载程序()中的错误,其中在构建时间之后附加/删除事件没有传播到UOW以获取flush()。

    References: #1347

  • [orm]

    修正了在没有映射已经存在类级名称的属性之前没有检查列前缀的错误。

  • [orm]

    特定collection属性上的session.expire()也将清除任何挂起的backref添加,以便下一次访问只正确返回数据库中存在的内容。提出了某种程度上的解决方法,尽管我们正在考虑消除冲洗( [物体] )全部功能。

    References: #1315

  • [orm]

    session.scalar()现在按照session.execute()的方式将原始SQL字符串转换为文本(),并接受相同的替代方法。 * *千瓦级ARG。

  • [orm]

    对relation()的“确定方向”逻辑进行了改进,从而可以确定诸如mapper(a.join(b))->relation->mapper(b)等棘手情况的方向。

  • [orm]

    使用session.flush刷新部分对象集时( [体位学家] ,操作后仍处于挂起状态的挂起对象不会意外添加为持久对象。

    References: #1306

  • [orm]

    将“post-configure-attribute”方法添加到InstrumentationManager,以便“listen-for-events.py”示例再次起作用。

    References: #1314

  • [orm]

    现在检测到方向相同的正向和互补反向参考,即OneTomany或Manytoone,并发出错误消息。稍后保存疯狂的循环依赖错误。

  • [orm]

    修复了查询中有关同时选择具有公共基类的多个联接表继承实体的错误:

    • 以前,应用于“a join b”上的“b”的自适应将被错误地部分应用于“a”。

    • 关系比较(即a.relevant==someb)在应该的时候没有得到适应。

    • 其他筛选,如query(a).join(a.bs).filter(b.foo='bar'),错误地采用了“b.foo”,就好像它是“a”。

  • [orm]

    修正了exists子句通过any()、has()等与左边的别名对象和右边的_type()进行的改编。

    References: #1325

  • [orm]

    添加了属性帮助器方法 set_committed_value 在sqlacalchemy.orm.attributes中。给定一个对象、属性名和值,会将该对象的值设置为其“已提交”状态的一部分,即可以理解为已从数据库加载的状态。帮助创建本地收集加载器等。

  • [orm]

    当传递非映射器/类插入的描述符时,查询不会因weakref错误而失败,并引发“无效列表达式”。

  • [orm]

    query.group_by()正确地考虑了应用于FROM子句的别名,例如WITH select_from()、WITH_多态性()或WITH FROM_self()。

sql

  • [sql]

    当在明确的标量上下文中使用时,select()的alias()将转换为“标量子查询”,即在比较操作中使用。这也适用于使用query.subquery()时的ORM。

  • [sql]

    修复了函数对象上缺少的_label属性,以及在带有use_标签的select()中使用的其他属性(例如在ORM列_property()中使用时)。

    References: #1302

  • [sql]

    匿名别名现在截断到方言允许的最大长度。在像Oracle这样的DBS上更重要,字符限制非常小。

    References: #1309

  • [sql]

    _uu selectable_uu()接口已完全替换为u子句_u element_uu()。

  • [sql]

    typeengine用于缓存方言特定类型的每方言缓存现在是weakkeyDictionary。这可以防止为创建任意大量引擎或方言的应用程序永久引用方言对象。有一个小的性能惩罚将在0.6中解决。

    References: #1299

extensions

  • [extensions]

    修复了序列化程序中由exists或其他embedded from构造触发的递归酸洗问题。

  • [extensions]

    声明性使用搜索查找“inherits”类 __bases__, 跳过子类局部的混合。

  • [extensions]

    声明性计算出联接表继承主联接条件,即使显式地给出了“inherits”映射器参数。

  • [extensions]

    声明性将正确解释backref()上的“foreign_keys”参数(如果它是字符串)。

  • [extensions]

    声明性将在与一起使用时接受表绑定列作为属性 __table__, 如果列已存在于 __table__. 该列将以添加到mapper()属性dict时的相同方式重新映射到给定键。

postgresql

  • [postgresql]

    遇到具有多个表达式的索引时,索引反射不会失败。

  • [postgresql]

    将pguuid和pgbit类型添加到sqlachemy.databases.postgres。

    References: #1327

  • [postgresql]

    当在域中指定这些类型时,未知pg类型的引用不会崩溃。

    References: #1327

sqlite

  • [sqlite]

    修复了sqlite反射方法,以便检测到触发自动光标关闭的不存在的cursor.description,以便在最近版本的pysqlite上不会出现任何结果失败,该版本在调用fetchone()但不存在行时引发错误。

mssql

  • [mssql]

    PYMSSQL 1.0.1的初步支持

  • [mssql]

    已更正MSSQL上不遵守最大标识符长度的问题。

0.5.2

Released: Sat Jan 24 2009

orm

  • [orm]

    进一步完善了0.5.1关于删除孤立级联放置在多对多关系上的警告。首先,坏消息是:警告既适用于多对多关系,也适用于多对一关系。这是必要的,因为在这两种情况下,当确定“孤立”状态时,sqla不会扫描完整的潜在父对象集-对于持久对象,它只检测一个in python de association事件以将该对象建立为“孤立”对象。接下来,好消息是:要通过外键或关联表支持一对一,或者通过关联表支持一对多,可以设置一个新标志single_parent=true,该标志表示链接到关系的对象只意味着有一个父对象。如果在python中发生多个父关联事件,则该关系将引发错误。

  • [orm]

    已将属性检测更改从0.5.1调整为完全为子类建立检测,其中映射器是在超类完全检测之后创建的。

    References: #1292

  • [orm]

    修复了“删除孤立”级联中的错误,即从两个不同父类到同一目标类的两个一对一关系将过早地删除实例。

  • [orm]

    修正了一个预加载错误,在这个错误中,自引用预加载将阻止其他预加载(无论是否为自引用)正确地连接到父连接。感谢Alex K创建了一个很棒的测试用例。

  • [orm]

    session.expire()和相关方法不会expire()卸载延迟的属性。这可以防止在刷新实例时不必要地加载它们。

  • [orm]

    query.join()/outerjoin()现在将正确地将别名()构造联接到现有的左侧,即使已调用query.from_self()或query.select_from(someselectable)。

    References: #1293

sql

  • [sql]

    对“列/表中的百分比符号和空格”的进一步修正

    “名称”功能。

    References: #1284

mssql

  • [mssql]

    已还原转换u unicode处理。结果未经转换就被传递。

    References: #1291

  • [mssql]

    这次真的修正了小数处理。

    References: #1282

  • [mssql] [Ticket:1289]

    修改了表反射代码,以便在构造表时仅使用Kwarg。

0.5.1

Released: Sat Jan 17 2009

orm

  • [orm]

    删除了一个内部连接缓存,当重复地将query.join()颁发给特殊的可选择文件时,该缓存可能会泄漏内存。

  • [orm]

    “clear()”,“save()”,“update()”,“save_or_update()”会话方法已被弃用,替换为“expunge_all()”和“add()”。expunge_all()”也已添加到scopedsession。

  • [orm]

    使“无映射表”异常现代化,并添加了更明确的 __table__/__tablename__ 声明性异常。

  • [orm]

    具体继承映射器现在检测从超类继承而来的属性,但不为具体映射器本身定义这些属性,并且检测属性在访问时发出描述性错误。

    References: #1237

  • [orm]

    增加了一个新的 relation() 关键字 back_populates . 这允许使用显式关系配置backreference。在具体映射器的层次结构和另一个类之间创建双向关系时,这是必需的。

    References: #1237, #781

  • [orm]

    添加的测试覆盖范围 relation() 在具体映射器上指定的对象。

    References: #1237

  • [orm]

    query.from ou self()和query.subquery()都会禁用生成的子查询中的前向联接的呈现。通过一个新的查询,可以公开“禁用所有的热切连接”功能。

    References: #1276

  • [orm]

    向查询添加了一系列基本的集合操作,这些操作将查询对象作为参数接收,包括union()、union_all()、intersect(),except_()、intersect_all(),except_all()。有关示例,请参阅query.union()的API文档。

  • [orm]

    修复了阻止query.join()和热切加载附加到从联合或别名联合选择的查询的错误。

  • [orm]

    为具体映射器上指定的双向关系添加了一个简短的文档示例。

    References: #1237

  • [orm]

    映射器现在在构造时使用最后一个仍保持持久的instructedAttribute对象来检测类属性。这个 _CompileOnAttr/`_ _ getattribute_uu()`方法已被删除。净效果是基于列的映射类属性现在可以在类级别上完全使用,而无需调用映射器编译操作,从而大大简化了声明性中的典型使用模式。

    References: #1269

  • [orm]

    ColumnProperty(和前端助手,如 deferred )不再忽略未知 * *关键字参数。

  • [orm]

    修复了UnitOfWork的“行切换”机制的错误,即将插入/删除转换为更新,当与联接表继承结合使用时,以及不包含子表定义值的对象,其中将呈现不带set子句的更新。

  • [orm]

    对于多对多关系使用delete openant已被弃用。这会产生误导或错误的结果,因为sqla不检索M2M的“父级”的完整列表。若要使用M2M表删除孤立行为,请使用显式关联类,以便将单个关联行视为父级。

    References: #1281

  • [orm]

    删除孤立级联始终需要删除级联。指定“删除孤立项而不删除”现在将引发一个取消预测警告。

    References: #1281

sql

  • [sql]

    改进了处理列名中百分号的方法。添加了更多测试。MySQL和PostgreSQL方言仍然没有为标识符发出正确的create table语句,其中包含百分号。

    References: #1256

schema

  • [schema]

    索引现在接受面向列的instructedAttributes(即基于列的映射类属性)作为列参数。

    References: #1214

  • [schema]

    没有名称的列(如声明性的)在请求其字符串输出时(如在堆栈跟踪中)不会引发非类型错误。

  • [schema]

    修正了在反射表上用foreignkey覆盖列时的错误,其中派生列(即select的“虚拟”列等)会无意中调用只针对原始列的模式级别清理逻辑。

    References: #1278

mysql

  • [mysql]

    添加了MySQL4.1中缺少的关键字,以便正确地进行转义。

mssql

  • [mssql]

    通过更可靠的测试修正了对大十进制值的处理。移除了浮点数上的字符串操作。

    References: #1280

  • [mssql]

    修改了mssql中的do-begin处理,以使用光标而不是连接,因此与dbapi兼容。

  • [mssql]

    通过更改对savepoint_版本的处理,纠正了adodbapi上的savepoint支持,这在mssql上不受支持。

misc

  • [declarative]

    现在可以在没有自己表的子类上指定列对象(即使用单表继承)。列将追加到基表,但只由子类映射。

  • [declarative]

    对于联合子类和单一继承子类,子类将只映射那些已经映射到超类上的列和那些在子类上显式的列。其他列显示在 Table will be excluded from the mapping by default, which can be disabled by passing a blank exclude_properties collection to the _ _映射器“args”。因此,定义自己列的单个继承类是映射这些列的唯一类。这种效果实际上是一种比通常使用显式映射更具组织性的映射。 `mapper() 除非你设置了 exclude_properties 显式参数。

  • [declarative]

    向声明性类添加新的列对象是错误的,该声明性类使用 __table__.

0.5.0

Released: Tue Jan 06 2009

general

  • [general]

    文档已转换为Sphinx。特别是,生成的API文档被构建成一个完整的“API参考”部分,该部分将编辑文档与生成的docstring结合起来组织起来。节与api文档之间的交叉链接得到了极大的改进,提供了一个支持javascript的搜索功能,并提供了所有类、函数和成员的完整索引。

  • [general]

    setup.py现在只能选择导入setuptools。如果不存在,则使用distutils。推荐使用新的“pip”安装程序,而不是简单安装,因为它以更简单的方式安装。

  • [general]

    在Examples文件夹中添加了PostGIS集成的非常基本的说明。

orm

  • [orm]

    query.with_monphysic()现在接受第三个参数“discriminator”,它将替换该查询的mapper.monphysic_的值。映射器本身不再需要设置多态性,即使映射器具有多态性标识。如果未设置,映射器将默认以非多态方式加载。总之,这两个特性允许非多态具体继承设置在每个查询的基础上使用多态加载,因为具体设置在所有情况下以多态方式使用时都容易出现许多问题。

  • [orm]

    dynamic_loader接受一个query_class=来定制用于动态集合及其生成的查询的查询类。

  • [orm]

    query.order_by()不接受任何将从查询中按状态删除任何挂起的订单,并取消任何映射器/关系配置的排序。这主要用于覆盖动态加载程序()上指定的顺序。

    References: #1079

  • [orm]

    现在保留编译期间引发的异常以提供“粘性行为”——如果对预编译映射属性的hasattr()调用触发编译失败并抑制异常,则会阻止后续编译,并在下一个compile()调用中重复该异常。这个问题在使用声明性时经常发生。

  • [orm]

    在继承目标的单个表中使用时,现在可以在继承目标的属性.of_type()中识别出来。any()/has()以及query.join(prop.of_type(…))。

  • [orm]

    当join的目标与基于属性的属性不匹配时,query.join()会引发一个错误-虽然不太可能有人这样做,但sqlAlchemy作者对这种特殊的松散的goosey行为感到内疚。

  • [orm]

    修正了当使用弱的_instance_map=false时的错误,其中修改的事件不会被截取以进行刷新()。

    References: #1272

  • [orm]

    修复了一些深层次的“列对应”问题,这些问题可能会影响对包含同一表的多个版本的可选表以及在不同级别的不同列位置包含相同表列的联合和类似表进行的查询。

    References: #1268

  • [orm]

    与列_Property()、Relation()等一起使用的自定义比较器类可以在比较器上定义新的比较方法,这些方法将通过InstrumentedAttribute上的_uuGetAttr_uuu()可用。在synonym()或comparable_property()的情况下,首先在用户定义的描述符上解析属性,然后在用户定义的比较器上解析属性。

  • [orm]

    添加了scopedsession.is_活动访问器。

    References: #976

  • [orm]

    可以将映射的属性和列对象作为键传递给query.update()。

    References: #1262

  • [orm]

    传递给表达式级别insert()或update()的values()的映射属性将使用映射列的键,而不是映射属性的键。

  • [orm]

    已更正query.delete()和query.update()在使用绑定参数时无法正常工作的问题。

    References: #1242

  • [orm]

    query.select_from(),from_statement()确保给定参数分别是fromClause或text/select/union。

  • [orm]

    query()可以作为列表达式传递一个“composite”属性,它将被扩展。有点关联。

    References: #1253

  • [orm]

    当传递各种列表达式(如字符串、子句列表、文本()构造)时,query()的健壮性稍高(这可能意味着它只会更漂亮地引发错误)。

  • [orm]

    first()与query.from_statement()按预期工作。

  • [orm]

    修复了0.5RC4中引入的错误,该错误涉及使用add_property()或等效工具将属性添加到映射器编译后的预加载不起作用。

  • [orm]

    修复了VIEWONLY=true的many to many relation()无法正确引用secondary->remote之间的链接的错误。

  • [orm]

    当向多对多关系中的“辅助”表发出插入时,将维护基于列表的集合中的重复项。假设M2M表上有一个unique或primary key约束,这将引发预期的约束冲突,而不是静默地删除重复的条目。注意,对于一对多关系,旧的行为仍然存在,因为在这种情况下,集合条目不会导致INSERT语句,而SQLA不会手动管理集合。

    References: #1232

  • [orm]

    query.add_column()可以像session.query()一样接受fromclause对象。

  • [orm]

    多对一关系与空的比较根据not_u()正确转换为is not null。

  • [orm]

    添加额外的检查以确保显式primaryjoin/secondaryjoin是子句元素实例,以防止以后出现更混乱的错误。

    References: #1087

  • [orm]

    改进了对非类类类的mapper()检查。

    References: #1236

  • [orm]

    Comparator工厂参数现在由所有MapperProperty类型记录和支持,包括Column_property()、Relation()、BackRef()和同义词()。

    References: #5051

  • [orm]

    将PropertyLoader的名称更改为RelationProperty,以便与所有其他名称保持一致。PropertyLoader仍作为同义词存在。

  • [orm]

    修复了在shard api中导致总线错误的“double iter()”调用,删除了0.4版本中遗留的错误result.close()。

    References: #1099, #1228

  • [orm]

    使session.merge级联不触发autoflush。修复合并实例过早插入缺少值的问题。

  • [orm]

    两个修复程序有助于防止在多态联合继承方案中呈现带外列(然后在导致笛卡尔积的FROM子句中呈现额外的表):

    • 改进了A->B->C继承情况下的“列自适应”,以便更好地定位通过多个间接级别相互关联的列,而不是呈现未自适应的列。

    • “多态鉴别器”列只为查询的实际映射器呈现。列不会从子类或超类映射器中“拉入”,因为不需要它。

  • [orm]

    修复了sharedsession.execute()上的shard_id参数。

    References: #1072

sql

  • [sql]

    可以使用rowproxy对象代替发送到connection.execute()和friends的字典参数。

    References: #935

  • [sql]

    列名称中可以再次包含百分号。

    References: #1256

  • [sql]

    sqlAlchemy.sql.expression.function现在是公共类。它可以被子类化,以命令式的方式提供用户定义的SQL函数,包括预先建立的行为。postgis.py示例说明了这一用法。

  • [sql]

    如果传入的对象(如dict)实现了uueq_uuu(),那么pickleType现在支持默认情况下的==比较。如果对象未实现uu eq_uuu()且mutable=true,则会引发一个取消预测警告。

  • [sql]

    修正了sqlacalchemy.sql中的导入怪异不导出 __names__.

    References: #1215

  • [sql]

    使用同一个foreignkey对象会反复引发错误,而不是在稍后自动失败。

    References: #1238

  • [sql]

    在insert/update/delete构造上为params()方法添加了notimplementederror。这些项当前不支持此功能,与values()相比,这也会有点误导。

  • [sql]

    反射外键将正确定位其引用的列,即使该列被赋予与反射名称不同的“key”属性。这是通过foreignkey/foreignkeyconstraint上名为“link_to_name”的新标志实现的,如果为真,则表示给定的名称是被引用列的名称,而不是其分配的键。

    References: #650

  • [sql]

    select()可以接受子句列表作为列,方法与表或其他可选的方法相同,内部表达式将用作列元素。

    References: #1253

  • [sql]

    session.is_modified()上的“被动”标志已正确传播到属性管理器。

  • [sql]

    union()和union_all()不会重击已应用于select()中的任何order_by()。如果将select()与order_by()结合起来(可能是为了支持限制/偏移量),那么还应该调用self_group()来应用括号。

mysql

  • [mysql]

    text()构造中的“%”符号自动转义为“%%”。由于此更改具有向后不兼容的性质,如果在字符串中检测到“%”,则会发出警告。

  • [mysql]

    修正了反射期间fk列不存在时异常中的错误。

    References: #1241

  • [mysql]

    修复了一个包含对该架构中另一个表的外键引用的远程架构表的反射的错误。

sqlite

  • [sqlite]

    表反射现在存储列的实际defaultclause值。

    References: #1266

  • [sqlite]

    修正错误,行为改变

mssql

  • [mssql]

    添加了新的MSGenericBinary类型。它映射到二进制类型,以便实现将长度指定类型视为固定宽度二进制类型和将非长度类型视为未绑定的可变长度二进制类型的专门行为。

  • [mssql]

    添加了新类型:msvarbinary和msimage。

    References: #1249

  • [mssql]

    在msreal、msntext、mssmalldatetime、mstime、msdatetimeoffset和msdatetime2类型中添加

  • [mssql]

    重构日期/时间类型。这个 smalldatetime 数据类型不再只截断到日期,现在将映射到mssmalldatetime类型。

    References: #1254

  • [mssql]

    更正了一个带有数字的问题以接受整数。

  • [mssql]

    映射 char_lengthLEN() 功能。

  • [mssql]

    如果一个 INSERT 包括一个子选项 INSERT 转换自 INSERT INTO VALUES 构造到 INSERT INTO SELECT 构造。

  • [mssql]

    如果列是 primary_key 它将是 NOT NULL 因为MSSQL不允许 NULL 在主键列中。

  • [mssql]

    MSBinary 现在返回 BINARY 而不是 IMAGE . 这是一个向后不相容的变化 BINARY 是固定长度的数据类型,而 IMAGE 是可变长度的数据类型。

    References: #1249

  • [mssql]

    get_default_schema_name 现在根据用户的默认模式从数据库中反映出来。这仅适用于MSSQL2005和更高版本。

    References: #1258

  • [mssql]

    通过使用新的排序规则参数添加了排序规则支持。这在以下类型上受支持:char、nchar、varchar、nvarchar、text、ntext。

    References: #1248

  • [mssql]

    对连接字符串参数的更改倾向于将dsn作为pyodbc的默认规范。有关详细的使用说明,请参阅mssql.py docstring。

  • [mssql]

    增加了对保存点的实验支持。它目前不能完全与会话一起工作。

  • [mssql]

    支持三个级别的列可空性:空、非空以及数据库配置的默认值。默认列配置(nullable=true)现在将在DDL中生成空值。以前没有发出任何规范,数据库默认值将生效(通常为空,但不总是如此)。若要显式请求数据库默认值,请将列配置为nullable=none,并且不会在DDL中发出任何规范。这是向后不兼容的行为。

    References: #1243

oracle

  • [oracle]

    已调整create_xid()的格式以修复两阶段提交。现在,我们有了Oracle两阶段提交的现场报告,可以正确地处理此更改。

  • [oracle]

    添加了oraclenvarchar类型,生成nvarchar2,还将unicode子类化,以便在默认情况下转换为unicode=true。nvarchar2自动反射到此类型中,因此这些列在没有显式convert_unicode=true标志的反射表上传递unicode。

    References: #1233

  • [oracle]

    修复了阻止某些类型的参数被接收的错误;感谢wwu.edu上的huddlej!

    References: #1265

misc

  • [dialect]

    在方言上添加了一个新的description_encoding属性,用于在处理元数据时对列名进行编码。这通常默认为UTF-8。

  • [engine/pool]

    invalidate()检查关闭状态以避免属性错误。

    References: #1246

  • [engine/pool]

    NullPool支持失败时重新连接行为。

    References: #1094

  • [engine/pool]

    在使用pool.manage(dbapi)时为初始池创建添加了互斥体。这可以防止在重负载启动时发生的“狗桩”行为的小情况。

    References: #799

  • [engine/pool]

    _ execute子句()返回到私有方法。现在ConnectionProxy可用,不需要子类化连接。

  • [documentation]

    门票。

    References: #1149, #1200

  • [documentation]

    添加了有关创建_session()默认值的说明。

  • [documentation]

    添加了有关metadata.reflect()的部分。

  • [documentation]

    更新的 TypeDecorator 部分。

  • [documentation]

    重新编写文档的“threadlocal”策略部分,因为最近对该特性感到困惑。

  • [documentation]

    从继承中删除了严重过时的“多态提取”和“选择表”文档,重新编写了“联合表继承”的后半部分。

  • [documentation]

    文件化的 comparator_factory Kwarg增加了新的文档部分“自定义比较器”。

  • [postgres]

    text()构造中的“%”符号自动转义为“%%”。由于此更改具有向后不兼容的性质,如果在字符串中检测到“%”,则会发出警告。

    References: #1267

  • [postgres]

    与服务器端光标一起调用alias.execute()不会引发attributeError。

  • [postgres]

    添加了对PostgreSQL的索引反射支持,使用了KenKuhlman提交的一个我们长期忽略的伟大补丁。

    References: #714

  • [associationproxy]

    关联代理属性在类级别上可用,例如myclass.aproxy。以前,此值为“无”。

  • [declarative]

    backref()接受为字符串的参数的完整列表包括“primaryjoin”、“secondary”、“secondary”、“foreign_keys”、“remote_side”、“order_by”。

0.5.0rc4

Released: Fri Nov 14 2008

general

  • [general]

    全局“Propigate”->“Propagate”更改。

orm

  • [orm]

    query.count()已得到增强,可以在更广泛的情况下执行“正确的操作”。它现在可以对多个实体查询以及基于列的查询进行计数。请注意,这意味着如果您在不使用任何联接条件的情况下说query(a,b).count(),它将计算a*b的笛卡尔积。任何针对基于列的实体的查询都将自动发出“select count(1)from(select…)”,以便返回实际行数,这意味着查询(func.count(a.name))等查询。count()将重新计算n值为1,因为该查询将返回一行。

  • [orm]

    很多性能调整。对各种ORM操作的粗略估计使其速度比0.5.0RC3快10%,比0.4.8快25-30%。

  • [orm]

    错误修复和行为变化

  • [orm]

    调整InstanceState上的增强垃圾收集,以更好地防止由于状态丢失而导致的错误。

  • [orm]

    query.get()在对多个实体执行时返回一条信息更丰富的错误消息。

    References: #1220

  • [orm]

    已在cls.relation.in()中还原NotImplementedError

    References: #1140, #1221

  • [orm]

    修复了涉及ORDER_by参数on relation()的PendingDeprecationWarning。

    References: #1226

sql

  • [sql]

    已删除连接对象的“properties”属性,应使用connection.info。

  • [sql]

    在resultProxy自动丢失光标之前恢复了“活动行数”提取。这是在0.5rc3中删除的。

  • [sql]

    重新安排 load_dialect_impl() 方法在 TypeDecorator 即使用户定义的 TypeDecorator 使用另一个 TypeDecorator 作为它的IMPL。

mssql

  • [mssql]

    大量清理和修复,以纠正限制和偏移的问题。

  • [mssql]

    正确的情况下,子查询作为二进制表达式的一部分需要转换为使用in和not in语法。

  • [mssql]

    固定的E符号问题,阻止插入小于1e-6的十进制值。

    References: #1216

  • [mssql]

    更正了处理模式时反射的问题,特别是当那些模式是默认模式时。

    References: #1217

  • [mssql]

    更正了将零长度项强制转换为varchar的问题。现在它可以正确地调整铸件。

misc

  • [access]

    添加了对货币类型的支持。

  • [access]

    函数没有返回其结果。

    References: #1017

  • [access]

    已更正联接问题。只能从外部或内部进入支架,不能单独连接。

    References: #1017

  • [ext]

    现在可以在中使用自定义的“继承条件” __mapper_args__ 使用声明性时。

  • [ext]

    在backRef()中使用时,基于固定字符串的“remote_side”、“order_by”和其他未正确传播的字符串。

0.5.0rc3

Released: Fri Nov 07 2008

orm

  • [orm]

    在sessionextension中添加了两个新的钩子:after_bulk_delete()和after_bulk_update()。在对查询执行大容量删除()操作后调用。在对查询执行大容量更新()操作后调用。

  • [orm]

    “not equals”将简单的多对一关系与实例的比较不会放到exists子句中,而是比较外键列。

  • [orm]

    删除了将集合与iterable进行比较的不真正有效的用例。使用contains()测试集合成员身份。

  • [orm]

    改进了别名()对象的行为,使它们更准确地适应所生成的表达式,这对自引用比较尤其有帮助。

    References: #1171

  • [orm]

    修正了由类绑定属性构造的primaryjoin/secondaryjoin条件的错误(通常在使用声明性属性时发生),之后查询会不适当地对其进行别名,特别是使用各种基于exists的比较器。

  • [orm]

    修正了当使用带有别名绑定描述符的多个query.join()时会丢失左别名的错误。

  • [orm]

    改进了weakref身份映射内存管理,使其不再需要互斥,而是对具有挂起更改的InstanceState在惰性基础上恢复垃圾收集的实例。

  • [orm]

    InstanceState对象现在在处理时删除对自身的循环引用,以使其不在循环垃圾收集之外。

  • [orm]

    在确定连接条件时,relation()不会在“请指定primaryjoin”消息中隐藏不相关的foreignkey错误。

  • [orm]

    修复了查询中涉及order_by()和同一类的多个别名的错误(将在中添加测试)

    References: #1218

  • [orm]

    当将query.join()与on子句的显式子句一起使用时,该子句将按联接的左侧命名,从而允许像query(source)这样的场景。从_self().join((dest,source.id==dest.source_id))正常工作。

  • [orm]

    如果每个列的“key”与该列的名称不同,则多态联合()函数将尊重它们。

  • [orm]

    修复了对具有“删除”级联的多对一关系()的“被动删除”的支持。

    References: #1183

  • [orm]

    修复了复合类型中阻止主键复合类型变异的错误。

    References: #1213

  • [orm]

    为内部属性访问添加了更多的粒度,这样层叠和刷新操作将不会初始化卸载的属性和集合,从而使它们在稍后的延迟加载中保持不变。backref事件仍然初始化挂起实例的属性和集合。

    References: #1202

sql

  • [sql]

    SQL编译器优化和复杂性降低。编译典型select()构造的调用计数比0.5.0rc2少20%。

  • [sql]

    方言现在可以生成长度可调的标签名称。传递参数“label_length=<value>”以创建_engine(),以调整动态生成的列标签中最大字符数,即“somecolumn as somelabel”。任何小于6的值都将导致最小大小的标签,由下划线和数字计数器组成。编译器使用dialect.max_identifier_length的值作为默认值。

    References: #1211

  • [sql]

    简化了对resultProxy“autoclose without results”的检查,仅基于cursor.description的存在。关于返回行的语句的所有基于regexp的猜测都已被删除。

    References: #1212

  • [sql]

    直接执行union()构造将正确设置结果行处理。

    References: #1194

  • [sql]

    “oid”或“rowid”列的内部概念已被删除。它基本上没有被任何方言使用,而且它与psycopg2的cursor.lastrowid一起使用的可能性已经基本消失,现在insert..returning已经可用。

  • [sql]

    删除了所有FromClause对象上的“defaultorderu by()”方法。

  • [sql]

    已修复table.tometadata()方法,以便将传入的架构参数传播到foreignkey构造。

  • [sql]

    与空集合相比,In运算符的行为略有变化。现在导致了与自我的不平等比较。更易于移植,但与非纯函数的存储过程中断。

mysql

  • [mysql]

    修复了边缘情况下的外键反射,其中表的显式模式=与连接所附加到的模式(数据库)相同。

  • [mysql]

    表反射中的include列不再是小写。

oracle

  • [oracle]

    为Oracle方言编写了一个docstring。显然,ohloh“很少的源代码注释”标签开始刺痛了:)。

  • [oracle]

    使用LIMIT/OFFSET时删除了FIRST_ROWS()优化标志,可以使用OPTIMIZE_LIMITS=True CREATE_ENGINE()标志重新启用。

    References: #536

  • [oracle]

    错误修复和行为变化

  • [oracle]

    在create_engine()上将auto_convert_lobs设置为false还将指示OracleBinary类型返回cx_oracle lob对象不变。

misc

  • [ext]

    添加了新的扩展名sqlachemy.ext.serializer。提供镜像pickle/unpickle的序列化程序/反序列化程序“classes”,以及dumps()和loads()。此序列化程序实现了一个“外部对象”pickler,该pickler将关键的上下文敏感对象(包括引擎、会话、元数据、表/列和映射器)保留在pickle流之外,稍后可以使用任何引擎/元数据/会话提供程序恢复pickle。这不用于酸洗没有任何特殊逻辑的常规对象实例,而是用于酸洗表达式对象和完整查询对象,以便可以在取消拾取时还原所有映射器/引擎/会话依赖项。

  • [ext]

    修复了阻止在列“mapped”collection()中使用声明性绑定的“column”对象的错误。

    References: #1174

  • [misc]

    flatten_Iterator()func不会将带有Iter_uu()方法的字符串解释为迭代器,例如在pypy中。

    References: #1077

0.5.0rc2

Released: Sun Oct 12 2008

orm

  • [orm]

    修复了涉及读/写关系()的错误,这些关系()在其primaryjoin条件中包含相当于外键列的文本表达式或其他非列表达式。

  • [orm]

    mapper()中的“非批处理”模式允许在更新/插入每个实例时调用mapper扩展方法,现在遵循给定对象的插入顺序。

  • [orm]

    修复了映射器中的rlock相关错误,该错误可能在调用可重入映射器compile()时死锁,这是在ForeignKey对象内部使用声明性构造时发生的。

  • [orm]

    scopedsession.query_属性现在接受查询u cls工厂,覆盖会话的配置查询u cls。

  • [orm]

    修复了干扰scopedsession.mapper应用默认值的能力的共享状态错误 __init__ 对象子类上的实现。

  • [orm]

    固定的查询切片(即查询 [x:y] )要正确处理零长度切片,请在两端都不切片。

    References: #1177

  • [orm]

    添加了一个示例,说明Celko的“嵌套集”是一个sqla映射。

  • [orm]

    包含带有别名参数的_eager(),即使别名嵌入到select中,也可以工作,就像通过query发送到查询时一样。select_from()。

  • [orm]

    contains_eager()用法现在与一个查询兼容,该查询还包含一个常规的eager加载和限制/偏移量,因为列将添加到查询生成的子查询中。

    References: #1180

  • [orm]

    session.execute()将执行传递给它的序列对象(从0.4回归)。

  • [orm]

    从object_mapper()和class_mapper()中删除了“raiseError”关键字参数。如果给定的类/实例未映射,则在所有情况下都会引发这些函数。

  • [orm]

    修复了autocommit=false会话上的session.transaction.commit()未启动新事务。

  • [orm]

    对session.identity映射的弱引用行为进行了一些调整,以减少异步GC副作用。

  • [orm]

    调整会话对新的“干净”对象的刷新后记帐,以更好地防止在对象异步GC时对其进行操作。

    References: #1182

sql

  • [sql]

    column.in(someselect)现在可以用作columns子句表达式,而子查询不会渗到from子句中。

    References: #1074

mysql

  • [mysql]

    临时表现在可以反射。

sqlite

  • [sqlite]

    对sqlite日期/时间绑定/结果处理进行了全面检查,以使用正则表达式和格式字符串,而不是strptime/strftime,以一般方式支持1900年前的日期(以微秒计)。

    References: #968

  • [sqlite]

    字符串(以及Unicode、UnicodeText等)在sqlite方言中禁用CONVERT_UNICODE逻辑,以适应pysqlite 2.5.0的新要求,即只接受Python Unicode对象;https://itsystementwicklung.de/pipermail/list-pysqlite/2008-March/000018.html

oracle

  • [oracle]

    Oracle将检测基于字符串的语句,这些语句在select as select语句之前的前面包含注释。

    References: #1187

0.5.0rc1

Released: Thu Sep 11 2008

orm

  • [orm]

    查询现在有delete()和update(values)方法。这允许对查询对象执行批量删除/更新。

  • [orm]

    查询返回的rowtuple对象( * cols)现在的特点是keynames比列键更喜欢映射属性名,列键比列名,即查询(class.foo,class.bar)将具有名称“foo”和“bar”,即使它们不是底层列对象的名称。直接列对象(如query(table.c.col))将返回列的“key”属性。

  • [orm]

    向查询添加了scalar()和value()方法,每个方法都返回一个标量值。scalar()不接受任何参数,大致相当于第一个()。 [0] ,value()采用单列表达式,大致相当于values(expr).next()。 [0] .

  • [orm]

    改进了在实体的query()列表中放置SQL表达式时确定FROM子句的方法。尤其是,标量子查询不应将其内部从对象“泄漏”到封闭查询中。

  • [orm]

    沿着relation()从映射类联接到映射子类,其中映射子类配置为单表继承,将包含一个in子句,该子句将被联接类的子类型限制为join的on子句中请求的子类型。这对预加载联接和query.join()都有效。注意,在某些情况下,IN子句也会出现在查询的WHERE子句中,因为这种区别具有多个触发点。

  • [orm]

    attributeextension已被改进,以便在实际发生突变之前触发事件。此外,append()和set()方法现在必须返回给定的值,该值用作突变操作中要使用的值。这允许创建验证attributeListeners,这些attributeListeners在操作实际发生之前引发,并且可以在使用之前将给定值更改为其他值。

  • [orm]

    现在,column_property()、composite_property()和relation()使用“extension”关键字参数接受单个或一组attributeextensions。

  • [orm]

    query.order_by().get()会自动从get发出的查询中删除“order by”,但不会引发异常。

  • [orm]

    添加了一个validator attributeextension和一个@validates decorator,该decorator以类似于@reconstructor的方式使用,并将一个方法标记为验证一个或多个映射属性。

  • [orm]

    class.someprop.in_()引发NotImplementedError,挂起关系的“in ”实现。

    References: #1140

  • [orm]

    修复了尚未加载集合的多对多集合的主键更新

    References: #1127

  • [orm]

    修正了延迟()列与其他不相关的同义词()一起使用的组会在延迟加载期间产生attributeError的错误。

  • [orm]

    sessionextension上的before_flush()钩子在最后一次计算new/dirty/deleted列表之前发生,允许在_flush()之前的例程进一步更改会话的状态,然后继续刷新。

    References: #1128

  • [orm]

    会话和其他会话的“extension”参数现在可以是一个列表,支持发送到多个session extension实例的事件。会话将session extensions放置在session.extensions中。

  • [orm]

    对flush()的可重入调用引发错误。这还可以作为一个基本的,但不是简单的,检查对session.flush()的并发调用。

  • [orm]

    在使用显式联接条件(即不在关系上)联接到联接表继承子类时,改进了query.join()的行为。

  • [orm]

    @orm.attributes.reconstite和mapperextension.reconstite已重命名为@orm.reconstitor和mapperextension.reconstite_实例

  • [orm]

    修复了继承自基类的子类的@reformator hook。

    References: #1129

  • [orm]

    composite()属性类型现在支持对复合类使用属性名而不是列的keynames表示状态时所需的composite()values()方法;默认生成的值现在在刷新时正确填充。此外,属性设置为“无”的合成也可以正确比较。

    References: #1132

  • [orm]

    attributes.get_history()返回的iterables的3元组现在可能是列表和元组的混合。(以前的成员总是列表。)

  • [orm]

    修正了在属性的前一个值过期的实体上更改主键属性会在flush()时产生错误的错误。

    References: #1151

  • [orm]

    修复了自定义检测错误,即没有为ORM未加载的新构造实例调用get_instance_dict()。

  • [orm]

    delete()将给定的对象添加到会话中(如果尚未存在)。这是一个0.4的回归错误。

    References: #1150

  • [orm]

    这个 echo_uow 旗上 Session 已弃用,工作单元日志记录现在仅为应用程序级别,而不是每个会话级别。

  • [orm]

    删除冲突 contains() 操作员从 InstrumentedAttribute 但不接受 escape 夸尔格

    References: #1153

sql

  • [sql]

    暂时从中回滚“order by”增强。此功能处于等待进一步开发的状态。

    References: #1068

  • [sql]

    exists()构造不会将其包含的元素列表“导出”为FROM子句,从而允许在select的columns子句中更有效地使用它们。

  • [sql]

    现在,和和或生成一个columnelement,允许布尔表达式作为结果列,即select( [and_(1, 0)] )

    References: #798

  • [sql]

    bind-params现在是columnelement的子类,通过orm.query可以选择它们(它们已经有了大多数columnelement语义)。

  • [sql]

    在exists()结构中添加了select_from()方法,它与常规select()越来越兼容。

  • [sql]

    添加了func.min()、func.max()、func.sum()作为“泛型函数”,基本上允许自动确定它们的返回类型。帮助处理sqlite、decimal类型等上的日期。

    References: #1160

  • [sql]

    添加decimal.decimal作为“自动检测”类型;使用decimal时,绑定参数和泛型函数将其类型设置为numeric。

schema

  • [schema]

    向元数据添加了“sorted_tables”访问器,该访问器将表对象按依赖关系的顺序作为列表返回。这会否决metadata.table_iterator()方法。“reverse=false”关键字参数也已从util.sort_tables()中删除;使用python的“revered”函数来反转结果。

    References: #1033

  • [schema]

    所有数值类型的“length”参数已重命名为“scale”。长度“”已弃用,但仍被接受并带有警告。

  • [schema]

    删除了用户定义类型的0.3兼容性(convert_result_value,convert_bind_param)。

mysql

  • [mysql]

    msinteger、msbiginteger、mstinyinteger、mssmalllinteger和msyear的“length”参数已重命名为“display_width”。

  • [mysql]

    添加了MSmediuminteger类型。

    References: #1146

  • [mysql]

    函数func.utc_timestamp()编译为utc_timestamp,不带括号,在与executemany()一起使用时,括号似乎会妨碍使用。

oracle

  • [oracle]

    limit/offset不再使用行数over来限制行,而是将子查询与特殊的Oracle优化注释结合使用。允许限制/偏移与Distinct一起使用。

    References: #536

  • [oracle]

    has_Sequence()now takes the current“schema”变元

    References: #1155

  • [oracle]

    将b文件添加到反射类型名称中

    References: #1121

misc

  • [declarative]

    修正了当复合主键引用另一个尚未定义的表时,映射器无法初始化的错误。

    References: #1161

  • [declarative]

    修正了当基于字符串的PrimaryJoin条件与backRef一起使用时会发生的异常引发。

0.5.0beta3

Released: Mon Aug 04 2008

orm

  • [orm]

    SQLAlChemy映射器的“ENTITY_NAME”功能已删除。有关基本原理,请参阅https://tinyurl.com/6nm2ne

  • [orm]

    session、sessionmaker()和scoped_session()上的“autoexpire”标志已重命名为“expire_on_commit”。它不会影响rollback()的过期行为。

  • [orm]

    修复了映射器延迟加载继承属性时可能出现的无限循环错误。

  • [orm]

    添加到会话的旧支持标志“启用事务记帐”标志,如果为false,则禁用所有事务级对象记帐,包括回滚时过期、提交时过期、新建/删除的列表维护以及开始时自动刷新。

  • [orm]

    relation()的“cascade”参数接受none作为值,这相当于no cascade。

  • [orm]

    动态关系的一个关键修复允许在flush()之后正确清除“修改的”历史记录。

  • [orm]

    在映射器初始化期间,类上的用户定义的@properties被检测到并保留在原位。这意味着,如果@property正在进行映射(并且列未重新映射到其他名称),则不会映射同名的表绑定列,也不会应用继承类中的已检测属性。同样的规则也适用于使用include_properties/exclude_properties集合排除的名称。

  • [orm]

    添加了一个新的sessionextension钩子,在附加()之后调用。这是通过add()、add_all()、delete()和merge()在对象的附加点调用的。

  • [orm]

    从另一个映射器继承的映射器在继承其继承的映射器的列时,将使用该继承映射器中指定的任何重新分配的属性名。以前,如果“base”已将“base_id”重新分配给名称“id”,“subbase(base)”仍将获得一个名为“base_id”的属性。这可以通过在每个子图中显式地声明列来解决,但这是相当不可行的,而且在使用声明性时也是不可能的。

    References: #1111

  • [orm]

    修正了会话中一系列潜在的争用条件,异步GC可以从会话中删除未修改的、不再引用的项,因为它们出现在要处理的项列表中,通常是在会话期间。expunge_all()和依赖方法。

  • [orm]

    对compileOnAttr机制进行了一些改进,该机制应降低“在编译期间属性x未被替换”警告的可能性。(这通常适用于sqla黑客,如elixir devs)。

  • [orm]

    修正了为挂起的孤立对象引发的“未保存的挂起实例”flusherror在生成导致错误的关系列表时不考虑超类映射器的错误。

sql

  • [sql]

    不带参数的func.count()呈现为count( ,相当于func.count(text(' “)

  • [sql]

    按表达式排序的简单标签名称呈现为它们自己,而不是作为它们相应表达式的重新声明。此功能当前仅对sqlite、mysql和postgresql启用。它可以在其他方言上启用,因为每个方言都支持这种行为。

    References: #1068

mysql

  • [mysql]

    在创建表中引用msenum值现在是可选的,并将根据需要进行报价。(对于现有表,引用总是可选的。)

    References: #1110

misc

  • [ext]

    作为参数发送到relation()的远程_端和外键参数的类绑定属性现在被接受,允许它们与声明性参数一起使用。另外,通过将订单指定为类绑定属性并结合预先加载,修复了涉及订单的错误。

  • [ext]

    已调整列的声明性初始化,以便非重命名列的初始化方式与非声明性映射器相同。这允许继承映射器设置其相同的名为“id”的列,特别是父“id”列优于子列,从而在请求此值时减少数据库往返。

0.5.0beta2

Released: Mon Jul 14 2008

orm

  • [orm]

    除了过期的属性外,如果结果集中存在延迟属性的数据,则也会加载这些属性。

    References: #870

  • [orm]

    如果属性列表不包含任何基于列的属性,则session.refresh()将引发一条信息性错误消息。

  • [orm]

    如果未指定列或映射器,则query()将引发一条信息性错误消息。

  • [orm]

    懒惰的加载器现在在继续之前触发自动冲洗。这允许集合或标量关系的expire()在autoflush上下文中正常工作。

  • [orm]

    column_property()表示SQL表达式或映射表中不存在的列(例如来自视图的列)的属性在插入或更新后自动过期,假定它们未在本地修改,以便在访问时使用最新数据刷新。

    References: #887

  • [orm]

    修复了使用query.join(cls,aliased=true)时两个联接的表继承映射器之间的显式自引用联接。

    References: #1082

  • [orm]

    当与join中的columns only子句和sql expression on子句一起使用时,修复了query.join()。

  • [orm]

    已从mapper()中删除“allow_column_override”标志。这面旗子几乎总是被误解的。它的特定功能通过include_properties/exclude_properties mapper参数提供。

  • [orm]

    修复 __str__() 查询的方法。

    References: #1066

  • [orm]

    即使定义了特定于表/映射器的绑定,session.bind也会用作默认值。

sql

  • [sql]

    添加了执行全文搜索的新match()运算符。支持PostgreSQL、SQLite、MySQL、MS-SQL和Oracle后端。

schema

  • [schema]

    添加前缀选项到 Table 在create table语句中接受要在create之后插入的字符串列表。

    References: #1075

  • [schema]

    Unicode、UnicodeText类型现在默认设置为“Assert_Unicode”和“Convert_Unicode”,但接受覆盖 * *这些值的Kwargs。

extensions

  • [extensions]

    声明性支持 __table_args__ 类变量,它是字典或形式(arg1,arg2,…,kw arg1:value,…)的元组,其中包含要传递给表构造函数的位置+kw参数。

    References: #1096

sqlite

  • [sqlite]

    修改了sqlite对“微秒”的表示以匹配str(somedatetime)的输出,即微秒以字符串格式表示为小数秒。这使得sqla的sqlite日期类型与直接使用pysqlite(它只调用str())保存的日期时间兼容。请注意,这与sqla 0.4生成的sqlite数据库文件中的现有微秒值不兼容。

    要在全球范围内获得旧行为:

    从sqlachemy.databases.sqlite import datetimemixin DateTimeMixin.__legacy_microseconds__ =真

    要获取单个日期时间类型的行为:

    t=sqlite.sldatetime()。 t.__legacy_microseconds__ =真

    然后使用“T”作为列上的类型。

    References: #1090

  • [sqlite]

    sqlite date、date time和time类型现在只接受python date time对象,而不接受字符串。如果您想自己用sqlite将日期格式化为字符串,请使用字符串类型。如果您希望他们返回日期时间对象,尽管他们接受字符串作为输入,在字符串周围创建一个typecorator-sqla不鼓励这种模式。

0.5.0beta1

Released: Thu Jun 12 2008

general

  • [general]

    全局“Propigate”->“Propagate”更改。

orm

  • [orm]

    如果每个列的“key”与该列的名称不同,则多态联合()函数将尊重它们。

  • [orm]

    修复了仅限0.4的错误,使复合列无法正确使用继承映射器。

    References: #1199

  • [orm]

    修复了映射器中与rlock相关的错误,该错误可能在调用可重入映射器compile()时死锁,这是在foreignkey对象内部使用声明性构造时发生的。从0.5移植。

  • [orm]

    修复了复合类型中阻止主键复合类型变异的错误。

    References: #1213

  • [orm]

    添加了scopedsession.is_活动访问器。

    References: #976

  • [orm]

    类绑定访问器可以用作relation()order_by的参数。

    References: #939

  • [orm]

    修复了sharedsession.execute()上的shard_id参数。

    References: #1072

sql

  • [sql]

    invalidate()检查关闭状态以避免属性错误。

    References: #1246

  • [sql]

    NullPool支持失败时重新连接行为。

    References: #1094

  • [sql]

    typeengine用于缓存方言特定类型的每方言缓存现在是weakkeyDictionary。这可以防止为创建任意大量引擎或方言的应用程序永久引用方言对象。有一个小的性能惩罚将在0.6中解决。

    References: #1299

  • [sql]

    修复了sqlite反射方法,以便检测到触发自动光标关闭的不存在的cursor.description,以便在最近版本的pysqlite上不会出现任何结果失败,该版本在调用fetchone()但不存在行时引发错误。

mysql

  • [mysql]

    修正了反射期间fk列不存在时异常中的错误。

    References: #1241

oracle

  • [oracle]

    修复了阻止某些类型的参数被接收的错误;感谢wwu.edu上的huddlej!

    References: #1265

firebird

  • [firebird]

    添加了对从插入(仅2.0+返回值)、更新和删除(仅2.1+返回值)的支持。

misc

  • [no_tags]

    映射器添加的“uuu init_uuu”触发器/装饰器现在试图精确镜像原始参数签名 __init__. “_sa_session”的传递不再是隐式的-必须在构造函数中允许此关键字参数。

  • [no_tags]

    ClassState被重命名为ClassManager。

  • [no_tags]

    类可以通过提供 __sa_instrumentation_manager__ 财产。

  • [no_tags]

    自定义检测可以使用任何机制将类管理器与类关联,将实例状态与实例关联。这些对象上的属性仍然是SQLAlchemy的本机检测所使用的默认关联机制。

  • [no_tags]

    已将实体名称、会话ID和实例密钥从实例对象移动到实例状态。这些值仍然以旧的方式可用,现在已不再推荐使用附加到类的描述符。访问时将发出拒绝警告。

  • [no_tags]

    “准备”检测的“准备”检测别名已被删除。

  • [no_tags]

    sqlAlchemy.exceptions已重命名为sqlAlchemy.exc。可以使用任一名称导入模块。

  • [no_tags]

    与ORM相关的异常现在在sqlAlchemy.orm.exc中定义。在sqlAlchemy.orm导入期间,在sqlAlchemy.exc中安装了ConcurrentModificationError、FlusherRor和UnmappedColumnError兼容别名。

  • [no_tags]

    sqlAlchemy.logging已重命名为sqlAlchemy.log。

  • [no_tags]

    已删除sqlachemy.exc中警告定义的过渡sqlachemy.log.sadeprecationwarning别名。

  • [no_tags]

    exc.assertionerror已被删除,并用python的内置assertionerror替换了用法。

  • [no_tags]

    附加到单个类的多个、实体名称=主映射器的MapperExtension的行为已更改。为类定义的第一个mapper()是唯一符合mapperExtension“instrument_class”、“init_instance”和“init_failed”事件的映射器。这是向后不兼容的;以前定义的最后一个映射器的扩展将接收这些事件。

  • [postgres]

    在Postgres中添加了索引反射支持,使用了KenKuhlman提交的一个我们长期忽略的大补丁。

    References: #714

Previous: 0.6换热器 Next: 0.4换热器