Release: 1.4.25 | Release Date: September 22, 2021

SQLAlchemy 1.4 Documentation

0.3换热器

0.3.11

Released: Sun Oct 14 2007

orm

  • [orm]

    使用join()在两个不同的M2M表上添加了从a->b的连接检查。这会在0.3中引发错误,但在使用别名时,可能在0.4中出现错误。

    References: #687

  • [orm]

    修复了在session.merge()中引发错误的小异常

  • [orm]

    修正了当映射器链接到一个表没有pk列的联接时,无法检测到联接表没有pk的错误。

  • [orm]

    修复了从自定义继承条件确定正确的同步子句时出现的错误

    References: #769

  • [orm]

    如果另一方集合不包含该项,则backref移除对象操作不会失败,支持noload集合

    References: #813

engine

  • [engine]

    修复了使用具有threadLocal设置的池时可能出现的另一个偶发争用情况

sql

  • [sql]

    调整子句的不同优先级,如 func.count(t.c.col.distinct())

  • [sql]

    修复了在bind$params中对内部“$”字符的检测

    References: #719

  • [sql]

    不要假定联接条件只包含列对象

    References: #768

  • [sql]

    调整了运算符优先级不匹配“==”等,使~(x==y)产生not(x=y),与mysql<5.0兼容(不喜欢“not x=y”)。

    References: #764

mysql

  • [mysql]

    在生成模式时固定了年份列的规范

sqlite

  • [sqlite]

    串化日期的通行证

mssql

  • [mssql]

    添加了对时间列的支持(使用日期时间模拟)

    References: #679

  • [mssql]

    增加了对bigint、money、smallmoney、uniqueidentifier和sql_变量的支持

    References: #721

  • [mssql]

    从反射表中删除时,索引名现在被引用。

    References: #684

  • [mssql]

    现在可以使用类似mssql:///的URI为pyodbc指定DSN吗?DSB= BOB

oracle

  • [oracle]

    从“binary”类型中删除long_string和long_binary,因此类型对象不会尝试将其值作为lob读取。

    References: #622, #751

firebird

  • [firebird]

    由于票据370(正确的方式),支持将rowcount()设置为false。

  • [firebird]

    列的可为空属性的固定反射。

misc

  • [postgres]

    当从备用模式反射表时,放置在主键(通常是序列名)上的“default”具有无条件引用的“schema”名称,这样需要引用的模式名称就可以了。对于不需要引用但不有害的模式名称来说,这有点不必要。

0.3.10

Released: Fri Jul 20 2007

general

  • [general]

    在0.3.9中添加的新互斥体会导致池的超时功能在争用条件下失败;如果许多线程同时将池推入溢出状态,则线程会立即提高TimeoutError而不会延迟。此问题已解决。

orm

  • [orm]

    清理到连接绑定会话,sessionTransaction

sql

  • [sql]

    获取连接绑定元数据以使用隐式执行

  • [sql]

    外键规范的标识符中可以有任何字符

    References: #667

  • [sql]

    在二元子句比较中增加了交换性意识,改进了ORM延迟负载优化

    References: #664

misc

  • [postgres]

    固定的最大标识符长度(63)

    References: #571

0.3.9

Released: Sun Jul 15 2007

general

  • [general]

    NoSuchColumnError的更好错误消息

    References: #607

  • [general]

    最后了解了如何获取SETUPTOOLS版本,如 sqlalchemy.__version__

    References: #428

  • [general]

    各种“engine”参数,如“engine”、“connectable”、“engine_or_url”、“bind_to”等都存在,但已弃用。它们都被一个词“绑定”所取代。还可以使用metadata.bind=<engine or connection>

orm

  • [orm]

    转发与0.4的兼容性:向查询添加了一个()、第一个()和全部()。0.4中的几乎所有查询功能都存在于0.3.9中,用于转发兼容。

  • [orm]

    重置joinpoint()这次真的很有效,保证!允许您从根目录重新加入:query.join( [“A”,“B”] ).filter(<crit>)。( [“A”,“C”] ).filter(<some other crit>).all()in 0.4 all join()调用从“根”开始。

  • [orm]

    在mapper()构造步骤中添加了同步,以避免在其他线程中编译预先存在的映射器时发生线程冲突。

    References: #613

  • [orm]

    当两个同名的主键列被分为一个属性时,映射器会发出警告。当映射到连接(或继承)时,这种情况经常发生。

  • [orm]

    synonym()属性完全受所有连接/带父操作的查询的支持

    References: #598

  • [orm]

    修正了删除多对多useList=false关系的项目时出现的非常愚蠢的错误

  • [orm]

    还记得那些关于多态结合的东西吗?对于联合表继承?有趣的事情…您不需要它来继承联接的表,只需通过outerjoin()将所有表串在一起即可。但是,如果涉及到具体的表,那么联合仍然适用(因为没有什么可以连接它们)。

  • [orm]

    对使用直接“outerjoin”子句的多态映射器的预加载进行小修复,以便更好地使用预加载

sql

  • [sql]

    架构中的表的foreignkey不是默认架构,它要求架构是显式的,即foreignkey('alt_chma.users.id')

  • [sql]

    现在可以使用引擎或url作为第一个参数构造元数据,就像boundmetadata一样。

  • [sql]

    boundmetadata现在已被弃用,元数据是直接替代品。

  • [sql]

    DynamicMetadata已重命名为ThreadLocalMetadata。不推荐使用dynamicmetadata名称,如果threadlocal=false,它是threadlocal metadata的别名或常规元数据。

  • [sql]

    复合主键表示为一个非键集,允许由同名的cols组成的复合键;出现在联接中。帮助继承场景制定正确的pk。

  • [sql]

    改进了从联接中获取“正确”和最少量的主键列集的能力,使外键和其他相等的列相等。这也主要是为了帮助继承场景制定主键列的最佳选择。

    References: #185

  • [sql]

    向sequence.create()/drop(),columndefault.execute()添加了“bind”参数

  • [sql]

    可以在具有与列名称不同的“key”属性的反射表中重写列,包括主键列

    References: #650

  • [sql]

    修复了当结果中存在重复的列名称时的“不明确列”结果检测

    References: #657

  • [sql]

    对“列目标”的一些增强,即在另一个可选列中将一列与“对应”列匹配的能力。这主要影响ORM映射到复杂连接的能力

  • [sql]

    元数据和所有架构项都可以安全地与pickle一起使用。慢表反射可以转储到一个腌制文件中,以便稍后重用。只需在解压后将引擎重新连接到元数据。

    References: #619

  • [sql]

    在队列池的“溢出”计算中添加了互斥体,以防止可以绕过max_溢出的争用条件

  • [sql]

    固定组合选择以提供正确的结果。在某些情况下会在sqlite上中断,但这些情况仍然会产生不正确的结果,sqlite不支持分组复合选择

    References: #623

  • [sql]

    固定的运算符优先级,以便正确应用括号

    References: #620

  • [sql]

    在_u()中调用<column>(即不带参数)将返回“case when(<column>为空),然后返回null else 0 end=1)”,以便在所有情况下都返回null或false,而不是抛出错误。

    References: #545

  • [sql]

    修正了select()的“where”/“from”条件,除了接受常规字符串外,还接受unicode字符串-都转换为text()。

  • [sql]

    除了column.distinct()之外,还添加了独立的distinct()函数

    References: #558

  • [sql]

    result.last_inserted_ids()应返回一个与表的主键约束大小相同的列表。创建了“被动”且不能通过cursor.lastrowid使用的值将为none。

  • [sql]

    长标识符检测固定使用>而不是>=作为最大标识长度

    References: #589

  • [sql]

    修复了可选择的错误。如果可选择的列是一个表的联接,而另一个涉及同一个表的联接,则对应的列(selectable.c.col)将不会返回selectable.c.col。错误的ORM决策

    References: #593

  • [sql]

    向types.py添加了间隔类型

    References: #595

mysql

  • [mysql]

    修复了某些错误的捕获,这些错误意味着连接中断

    References: #625

  • [mysql]

    修正了模运算符的转义

    References: #624

  • [mysql]

    在保留字中添加了“字段”

    References: #590

  • [mysql]

    各种反射增强/修复

sqlite

  • [sqlite]

    重新排列方言初始化,以便有时间警告pysqlite1太旧。

  • [sqlite]

    sqlite更好地处理与各种日期/时间/日期时间列混合并匹配的日期/日期/时间对象

  • [sqlite]

    字符串pk列插入不会被OID覆盖

    References: #603

mssql

  • [mssql]

    pyodbc的固定端口选项处理

    References: #634

  • [mssql]

    现在能够反映标识列的起始值和增量值

  • [mssql]

    对将scope_identity()与pyodbc一起使用的初步支持

oracle

  • [oracle]

    日期时间修复:使次秒时间戳生效,添加了支持类型的OracleDate。日期只包含年/月/日

    References: #604

  • [oracle]

    添加了方言标记“auto_convert_lob”,默认值为true;将导致在结果集中检测到的任何lob对象强制转换为oraclebinary,以便在没有类型映射的情况下(即,如果发出了文本execute())自动读取lob()。

  • [oracle]

    mod运算符“%”生成mod

    References: #624

  • [oracle]

    使用python 2.3时,将cx_oracle datetime对象转换为python datetime.datetime

    References: #542

  • [oracle]

    Oracle文本类型中的固定Unicode转换

misc

  • [ext]

    在dict关联代理上的迭代现在类似于dict,而不是像instructedList那样(例如,在键上而不是值上)

  • [ext]

    关联代理不再与源集合紧密绑定,而是使用thunk构造。

    References: #597

  • [ext]

    将selectone_by()添加到assignmapper

  • [postgres]

    修正了模运算符的转义

    References: #624

  • [postgres]

    增加了对域反射的支持

    References: #570

  • [postgres]

    反射期间缺少的类型解析为空类型而不是引发错误

  • [postgres]

    上面“schema”中的修复程序修复了从alt schema表到公共模式表的外键反射。

0.3.8

Released: Sat Jun 02 2007

orm

  • [orm]

    将reset_joinpoint()方法添加到查询中,将“join point”移回起始映射器。0.4将在所有情况下更改join()的行为以重置“join point”,因此这是一个临时方法。为了向前兼容,请确保使用单个join()指定跨多个关系的联接,即join( [“A”、“B”、“C”] )

  • [orm]

    修复了query.instances()中的bug,该bug只处理额外的映射器或一个额外的列。

  • [orm]

    “删除孤立”不再意味着“删除”。将这两个操作的行为分开的持续努力。

  • [orm]

    多对多关系为关联表上的删除操作正确设置绑定参数的类型

  • [orm]

    多对多关系检查删除操作从关联表中删除的行数是否与预期结果匹配

  • [orm]

    session.get()和session.load()传播 * *Kwargs到查询

  • [orm]

    修复为多态查询,它允许原始多态联合嵌入到相关子查询中

    References: #577

  • [orm]

    fix to select_by(<propname>=<object instance>)-样式连接与多对多关系结合,在r2556中引入错误

  • [orm]

    mapper()的“primary_key”参数将传播到“polymorphic”映射器。此列表中的主键列将被规范化为映射器的本地表的主键列。

  • [orm]

    恢复了sa.orm.strategies logger下的“lazy loading clause”日志记录,在0.3.7中删除。

  • [orm]

    改进了对从映射到select()语句的映射器中热切加载属性的支持;也就是说,热切加载程序更好地定位正确的可选择项,以便附加其左外部联接。

sql

  • [sql]

    _ label类重写compare-self以返回其最终对象。也就是说,如果您说someexpr.label('foo')==5,它将生成正确的“someexpr==5”。

  • [sql]

    _标签传播“_hide_froms()”,以便标量选择在FROM子句574方面的行为更正确。

  • [sql]

    使用OID_列作为排序依据时修复为长名称生成(在映射器查询中大量使用的OID)

  • [sql]

    显著提高了resultproxy的速度,预缓存了typeengine方言实现并保存了每列的函数调用

  • [sql]

    括号通过新的分组结构应用于子句。使用运算符优先级更智能地将括号应用于子句,提供更清晰的子句嵌套(不改变放在其他子句中的子句,即没有“parens”标志)

  • [sql]

    添加了'modifier'关键字,其工作方式与func.<foo>类似,但不添加括号。例如选择( [修饰符.distinct(…)] 等)

  • [sql]

    删除了“选择中不包含属于联合的分组依据”限制

    References: #578

mysql

  • [mysql]

    现在几乎所有mysql列类型都支持声明和反射。添加nchar、nvarchar、varbinary、tinyblob、longblob、year

  • [mysql]

    二进制传递现在总是生成一个blob,避免了非常旧的数据库版本的问题。

  • [mysql]

    支持列级字符集和排序声明,以及ASCII、Unicode、National和Binary速记。

firebird

  • [firebird]

    将最大标识符长度设置为31

  • [firebird]

    支持由于票据370而设置为false的_sane_rowcount()。版本化的“id”列功能在FB中不起作用。

  • [firebird]

    一些执行修复

  • [firebird]

    新的关联代理实现,实现列表、dict和基于集的关系集合的完整代理

  • [firebird]

    添加了orderinglist,一个自定义列表类,用于将对象属性与该对象在列表中的位置同步。

  • [firebird]

    在select()期间,对selectresultsget的小修复不会绕过自身。

  • [firebird]

    添加了filter(),filter_by()到assignmapper

misc

  • [engines]

    将detach()添加到连接,允许将基础DBAPI连接从其池中分离,关闭取消引用/关闭(),而不是由池重用。

  • [engines]

    向连接添加了invalidate(),将立即使连接及其基础DBAPI连接失效。

0.3.7

Released: Sun Apr 29 2007

orm

  • [orm]

    修正了关键问题:当使用了选项(chengload())之后,映射器将始终为所有后续的限制/偏移/不同查询应用查询“包装”行为,即使没有对这些后续查询应用预加载。

  • [orm]

    添加了query.with ou parent(someinstance)方法。从父实例使用惰性联接条件搜索目标实例。采用可选字符串“property”来隔离所需的关系。还添加静态查询。从父级(实例、属性)版本查询。

    References: #541

  • [orm]

    通过(someprop=someinstance)查询来改进query.xxx_,使用与父级类似的方法,即使用“lazy”子句,防止将远程实例的表添加到SQL中,从而使更复杂的条件成为可能。

    References: #554

  • [orm]

    为查询添加了聚合的生成版本,即sum()、avg()等。通过query.apply_max()、apply_sum()等使用552

  • [orm]

    将distinct()或distinct=true与join()和类似的

  • [orm]

    与label/bindparam名称生成相对应,热切加载程序为使用MD5哈希创建的别名生成确定性名称。

  • [orm]

    改进/固定的自定义集合类(在惰性加载期间仍在查找它们的append()方法)。

  • [orm]

    还原了旧的“column_property()”ORM函数(以前被称为“column()”)以强制将任何列表达式作为映射器上的属性添加,尤其是那些映射的可选对象中不存在的列表达式。这允许将任何类型的“标量表达式”添加为关系(尽管它们与渴望加载存在问题)。

  • [orm]

    针对多态映射器修复多对多关系

    References: #533

  • [orm]

    在session.merge()方面取得进展,并将其用法与实体名称结合起来

    References: #543

  • [orm]

    继承映射器之间关系的常见调整,在本例中,将relation()s建立为子类映射器,其中联接条件来自超类表。

sql

  • [sql]

    结果集列的keys()不是低基的,返回时与cursor.description中所表示的完全相同。注意,这会导致colname在Oracle中全部大写。

  • [sql]

    为支持Unicode表名、列名和SQL语句的数据库提供初步支持。目前与sqlite和postgres合作。MySQL 主要地 工作,但has_table()函数不工作。反射也起作用。

  • [sql]

    unicode类型现在是string的直接子类,它现在包含所有的“convert-unicode”逻辑。这有助于更好地处理数据库(如MS-SQL)中出现的各种Unicode情况,并允许对Unicode数据类型进行子类化。

    References: #522

  • [sql]

    子句元素现在可以在子句中使用,如绑定参数等。

  • [sql]

    为实现反向运算符 CompareMixin 元素,允许“5+somecolumn”等表达式。

  • [sql]

    update()和delete()的“where”条件现在将嵌入的select()语句与要更新或删除的表关联起来。这与嵌套select()语句关联的工作原理相同,可以通过嵌入select()上的correlate=false标志来禁用。

  • [sql]

    列标签现在在编译阶段生成,这意味着它们的长度取决于方言。因此,在Oracle上,一个被截断为30个字符的标签在Postgres上将输出到63个字符。此外,真正的labelname始终作为可选父级上的访问器附加,因此不需要知道“截断的”标签名称。

    References: #512

  • [sql]

    列标签和绑定参数“truncation”现在也会根据它们在正在编译的完整语句中的顺序生成确定性名称。这意味着相同的语句将在应用程序重新启动时产生相同的字符串,并允许DB查询计划缓存更好地工作。

  • [sql]

    使用子查询时生成的“mini”列标签(用于解决不理解“foo.id”等同于“id”的Glithy sqlite行为)现在仅在从中选择这些命名列的情况下生成(部分)

    References: #513

  • [sql]

    ColumnElement上的label()方法将把基元素的typeengine正确地传播到标签,包括从scalar=true select()语句创建的label()。

  • [sql]

    MS-SQL更好地检测查询是子查询的时间,并且知道不为这些查询生成按短语排序的顺序。

    References: #513

  • [sql]

    修正了fetchmany()“size”参数在大多数dbapis中是位置性的

    References: #505

  • [sql]

    将none作为参数发送到func.<something>将生成一个空参数

  • [sql]

    Unicode URL中的查询字符串获取编码为ASCII的键 * *克瓦格斯

  • [sql]

    对raw execute()稍作改动,以同时支持位置参数的元组,而不仅仅是列表

    References: #523

  • [sql]

    fix to case()构造将第一个when条件的类型作为case语句的返回类型传播

extensions

  • [extensions]

    对AssociationProxy的修复很大,因此可以将多个AssociationProxy对象与单个关联集合关联。

  • [extensions]

    根据它们的键(即 __name__) α551

mysql

  • [mysql]

    支持在url查询字符串中以内联形式提供的ssl参数,前缀为“ssl uuuu”,由terjeros@gmail.com提供。

  • [mysql] [<schemaname>]

    MySQL使用“describe.<tablename>”,在表不存在时捕捉异常,以确定表是否存在。这支持Unicode表名和架构名。使用mysql5进行测试,但也应该使用4.1系列。(557)

sqlite

  • [sqlite]

    删除了sqlite将唯一索引作为主键的一部分反映的愚蠢行为(?!)

mssql

  • [mssql]

    pyodbc现在是mssql的首选db-api,如果没有特别请求模块,将首先在模块探测器上加载。

  • [mssql]

    现在使用的是@@scopeu标识,而不是@@identity。此行为可能会被引擎“use”关键字参数覆盖,该参数也可以在dburi中指定。

oracle

  • [oracle]

    小修复允许连续编译具有限制/偏移特性的同一选定对象。Oracle方言需要修改对象,使其具有行号,并且没有对连续的编译执行完整的一系列步骤。

misc

  • [engines]

    用于发出警告的警告模块(而不是日志记录)

  • [engines]

    清理所有引擎的DBAPI导入策略

    References: #480

  • [engines]

    重构引擎内部结构,降低了复杂性和代码路径的数量;在ExecutionContext中放置更多的状态,以允许对光标处理、结果集进行更多方言控制。resultproxy完全重构,并且有两个版本的“缓冲”结果集,用于不同的目的。

  • [engines]

    服务器端光标支持Postgres中的完全功能。

    References: #514

  • [engines]

    改进的框架,通过对数据库断开连接相关错误消息对应的异常进行方言特定的检测,自动使丢失基础数据库的连接失效。此外,当检测到“连接不再打开”的情况时,整个连接池将被丢弃并替换为新实例。α516

  • [engines]

    sqlacalchemy.databases中的方言将成为安装工具的入口点。加载内置数据库方言的工作方式与往常一样,但如果找不到,将退回到尝试pkg_资源加载外部模块。

    References: #521

  • [engines]

    引擎包含引用create_engine()使用的url.url对象的“url”属性。

  • [informix]

    添加了Informix支持!尊敬的张士友,他付出了巨大的努力。

0.3.6

Released: Fri Mar 23 2007

orm

  • [orm]

    selectresults扩展的完整功能集已合并到一组新的查询方法中。这些方法都提供了“生成”行为,即复制查询并返回一个新的查询,并添加了其他条件。新方法包括:

    • filter()-将select条件应用于查询

    • filter_by()-将“by”样式标准应用于查询

    • avg()-返回给定列的avg()函数

    • join()-连接到属性(或跨属性列表)

    • outer join()-类似join(),但使用左外部联接

    • limit()/offset()-应用基于限制/偏移范围的访问,应用限制/偏移:session.query(foo) [3:5]

    • distinct()-应用distinct

    • list()-评估标准并返回结果

    没有对查询的API进行不兼容的更改,也没有弃用任何方法。现有的方法如select()、select_by()、get()、get_by()都会立即执行查询,并像往常一样返回结果。join_to()/join_via()仍然存在,尽管generative join()/outerjoin()方法更容易使用。

  • [orm]

    与instances()一起使用的多个映射器的返回值现在返回请求的映射器列表的笛卡尔积,表示为元组列表。这与记录的行为相对应。为了使实例正确匹配,“uniquing”在使用此功能时被禁用。

  • [orm]

    查询有add_entity()和add_column()生成方法。它们将在编译时向查询添加给定的mapper/class或columnelement,并将它们应用于instances()方法。用户负责构造合理的连接条件(否则可以得到完整的笛卡尔积)。结果集是非唯一的元组列表。

  • [orm]

    字符串和列也可以发送到 * 实例()的参数,其中这些精确的结果列将是结果元组的一部分。

  • [orm]

    可以将完整的select()构造传递给query.select()(无论如何都有效),也可以传递给query.selectfirst()、query.selectone(),后者将按原样使用(即不编译查询)。工作原理类似于将结果发送到实例()。

  • [orm]

    如中所示,在select语句中,由除“热切加载程序”本身之外的其他东西放置的“order by”子句不会“化名”,以修复重复列的可能性。但是,这意味着您必须对query.select()的“order by”中的列更加小心,因为您已经在条件中显式地命名了这些列(即,不能依赖于热切的加载器为您添加它们)。

    References: #495

  • [orm]

    在会话中添加了一个方便的多用途“identity_key()”方法,允许为主键值、实例和行生成标识密钥,由Daniel Miller提供。

  • [orm]

    即使对于操作的“backref”端发生的操作,也将正确处理多对多表。

    References: #249

  • [orm]

    添加了“刷新过期”级联。允许refresh()和expire()调用沿关系传播。

    References: #492

  • [orm]

    对多态关系的更多修复,包括对多态映射器的多对一关系进行适当的延迟子句生成。还修复了对“方向”的检测,与不属于多态联合的列相比,属于多态联合的列具有更具体的目标。

    References: #493

  • [orm]

    当使用“viewOnly=true”将其他表拉入不是关系父/子映射父映射的联接条件时,对关系计算的某些修复

  • [orm]

    当循环中的某些对象实际上不是刷新的一部分时,对包含对循环链之外的其他实例的引用的循环引用关系的刷新修复。

  • [orm]

    对“使用B的集合刷新对象A,但将C放入集合”错误条件进行积极检查- 即使c是b的一个子类 ,除非B的映射器以多态方式加载。否则,该集合稍后将加载一个“b”,它应该是一个“c”(因为它不是多态的),它打破了双向关系(即c有它的a,但a的backref将把它作为“b”类型的不同实例进行lazyload)。此检查将咬一些这样做的人,而这些人没有问题,因此错误消息还将记录一个标志“e”。启用“typechecks=false”以禁用此检查。但要注意,没有这种检查,双向关系尤其变得脆弱。

    References: #500

sql

  • [sql]

    bindparam()名称现在可重复!在一条语句中指定两个同名的不同bindparam(),键将被共享。正确的位置/命名参数在编译时转换。对于名称冲突的“别名”绑定参数的旧行为,请指定“unique=true”-此选项仍在内部用于所有自动生成的(基于值的)绑定参数。

  • [sql]

    通过bindparam()或literal(),即select,对bind params作为列子句的支持稍微好一点。( [文字(Foo)] )

  • [sql]

    元数据可以通过“url”或“engine”kwargs到构造函数或使用connect()方法绑定到引擎。boundMetadata与元数据相同,但需要Engine_或_url参数。dynamicmetadata是相同的,默认情况下提供线程本地连接。

  • [sql]

    EXISTS()变得可以作为独立的可选择项使用,而不仅仅是在WHERE子句中使用,即EXISTS( [列] ,Criteria).select()

  • [sql]

    相关子查询在order by、group by内工作

  • [sql]

    使用显式连接固定函数执行,即conn.execute(func.dosomething())

  • [sql]

    在select()上使用_labels标志不会自动为文本列元素创建标签,因为我们不能对文本进行假设。要为文本列创建标签,可以说“somecol as somelabel”,或者使用literal_column(“somecol”).label(“somelabel”)。

  • [sql]

    当文本列“代理”到列集合中以供选择时,不会对其进行引用(是否传播文本标志)。文本列是通过文本列(“somestring”)指定的。

  • [sql]

    在join.select()中添加了“fold_equivalents”布尔参数,它从生成的列子句中删除了“duplicate”列,这些列根据join条件已知是等效的。这在构造联接的子查询时非常有用,Postgres会抱怨是否存在重复的列名。

  • [sql]

    固定使用foreignkeyconstraint上的alter标志

    References: #503

  • [sql]

    固定使用2.4-仅“反向”在topology.py中

    References: #506

  • [sql]

    对于黑客,重构克劳塞莱姆和SchemaItem的“访问者”系统,以便使用方法visitor.traverse(item)由克劳塞维瑟本身控制项的遍历。accept_visitor()方法仍然可以直接调用,但不会对子项进行任何遍历。ClauseElement/SchemaItem现在有一个可配置的get_children()方法来返回每个父对象的子元素集合。这允许通过限制遍历的简单方法(只传递由适当的get_children()方法拾取的标志),对项进行完全遍历,使其清晰无误(以及可记录)。

    References: #501

  • [sql]

    当设置为零时,case语句的“else”参数现在可以正常工作。

extensions

  • [extensions]

    selectresults上的options()方法现在像其他selectresults方法一样“生成性”实现。但无论如何,您现在只需要使用查询。

    References: #472

  • [extensions]

    query()方法由assignmapper添加。这有助于导航到查询的所有新生成方法。

mysql

  • [mysql]

    添加了一个catchall * *kwargs到msstring,帮助反射模糊类型(如ms 4.0中的“varchar()binary”)。

  • [mysql]

    添加了显式mstimestamp类型,该类型在使用types.timestamp时生效。

oracle

  • [oracle]

    任何大小的输入都可以使用二进制!cx_Oracle工作正常,这是我的错误,因为二进制文件被传递,而不是setinputsizes的blob(同样,单元测试甚至没有设置输入大小)。

  • [oracle]

    还修复了对单独变更集的CLOB读/写。

  • [oracle]

    对于Oracle,auto-setinputsizes默认为true,修复了错误传播错误类型的情况。

misc

  • [ms-sql]

    删除日期列类型的秒输入(可能

    应该完全取消时间)

  • [ms-sql]

    浮动字段中的空值不再引发错误

  • [ms-sql]

    带偏移量限制现在引发错误(MS-SQL不支持偏移量)

  • [ms-sql]

    添加了一个工具,用于将mssql类型varchar(max)而不是文本用于大型非大小化字符串字段。使用新的“text_as_varchar”打开它。

    References: #509

  • [ms-sql]

    没有限制的ORDER BY子句现在在子查询中被剥离,因为MS-SQL禁止这种用法。

  • [ms-sql]

    模块导入代码的清理;可指定的DB-API模块;模块首选项的更显式排序。

    References: #480

0.3.5

Released: Thu Feb 22 2007

orm

  • [orm] [bugs]

    关系计算的另一个重构。允许使用映射器之间的关系(尤其是多态映射器)进行更准确的ORM行为,以及它们在查询、selectresults中的用法。门票包括,、。

    References: #439, #441, #448

  • [orm] [bugs]

    删除了在类上指定自定义集合的不推荐使用的方法;现在必须使用“collectionu class”选项。当人们使用assign_mapper()时,旧方法开始产生冲突,它现在将一个“options”方法与一个名为“options”的关系进行修补。(关系优先于MonkeyPatched分配映射器方法)。

  • [orm] [bugs]

    extension()查询选项传播到mapper._instance()方法,以便调用所有与加载相关的方法

    References: #454

  • [orm] [bugs]

    如果没有为关系返回任何行,则与继承映射器的热切关系不会失败。

  • [orm] [bugs]

    修复了多个后代类上的热切关系加载错误

    References: #486

  • [orm] [bugs]

    修复了非常大的拓扑类型,礼节性蚂蚁.aasma在gmail

    References: #423

  • [orm] [bugs]

    对于检测“自引用”关系,特别是多态映射器之间的关系,预加载稍微更加严格。这会导致“急切降级”到延迟加载。

  • [orm] [bugs]

    改进了对嵌入到查询“where”条件中的复杂查询的支持。select())

    References: #449

  • [orm] [bugs]

    映射器选项(如:chengload()、lazyload()、deferred())可用于“symony()”关系

    References: #485

  • [orm] [bugs]

    修复了层叠操作错误地在层叠中包含已删除集合项的错误

    References: #445

  • [orm] [bugs]

    修复了在单个工作单元中将一对多子项移动到新父项时的关系删除错误。

    References: #478

  • [orm] [bugs]

    固定的关系删除错误,如果使用手动删除或“删除”级联而不使用“删除孤立项”,则子级上单列pk/fk的父/子级将引发“空白出主键”错误。

  • [orm] [bugs]

    修正为延迟,这样在仅设置pk col属性时加载操作不会出错。

  • [orm] [enhancements]

    已实现映射器的外键参数。与primaryjoin/secondaryjoin参数一起使用可指定/重写表实例上定义的外键。

    References: #385

  • [orm] [enhancements]

    包含“急”(“foo”)会自动暗示“急”(“foo”)。

  • [orm] [enhancements]

    将“alias”参数添加到contains_eager()。使用它可以指定用于查询迫切加载的子项的别名的字符串名称或别名实例。比“装饰”更容易使用

  • [orm] [enhancements]

    添加了“contains_alias()”选项,用于将结果集映射到映射表的别名

  • [orm] [enhancements]

    添加了对带有sessionTransaction的py2.5“with”语句的支持

    References: #468

sql

  • [sql]

    “区分大小写”的值现在默认为true,而不考虑标识符的大小写,除非特别设置为false。这是因为对象可能被标记为包含混合大小写的其他对象,而传播“区分大小写=错误”会破坏这一点。使用标签和“假”列对象时引用的其他修复程序

  • [sql]

    在ClauseElement中添加了一个“supports_execution()”方法,以便在适合执行的情况下可以表示各种子句…例如,您可以执行“select”,但不能执行“table”或“join”。

  • [sql]

    修复了在引擎、连接上传递到纯文本execute()的参数。可以处理 * args或位置的列表实例, * *Kwargs或命名args的dict实例,或要调用ExecuteMany()的列表或dict列表

  • [sql]

    对boundmetadata进行小修复以接受unicode或字符串URL

  • [sql]

    修复了在gmail由andrija命名的primarykeyconstraint生成

    References: #466

  • [sql]

    固定生成列上的检查约束

    References: #464

  • [sql]

    修复tometata()操作以在列和表级别传播约束

extensions

  • [extensions]

    为selectresults添加了distinct()方法。通常只应在使用count()时产生差异。

  • [extensions]

    向selectresults添加了options()方法,相当于query.options()。

    References: #472

  • [extensions]

    增加可选 __table_opts__ 字典到activemapper,将向表对象发送kw选项

    References: #462

  • [extensions]

    添加了selectFirst(),selectFirst_by()以分配_映射器

    References: #467

mysql

  • [mysql]

    修复对旧数据库的反射,该数据库可能为“show variables like”语句返回array()类型

mssql

  • [mssql]

    对pyodbc的初步支持(yay!)

    References: #419

  • [mssql]

    增加了对nvarchar类型的更好支持

    References: #298

  • [mssql]

    修复pymsql上的提交逻辑

  • [mssql]

    使用架构修复query.get()。

    References: #456

  • [mssql]

    修复非整数关系

    References: #473

  • [mssql]

    DB-API模块现在可以在运行时选择

    References: #419

  • [mssql] [415] [481] [tickets:422]

    现在通过了更多的单元测试

  • [mssql]

    更好的UnitTest与ANSI函数的兼容性

    References: #479

  • [mssql]

    改进了对具有自动插入功能的隐式序列pk列的支持

    References: #415

  • [mssql]

    修正了adobapi中的空白密码

    References: #371

  • [mssql]

    修复了使用pyodbc的单元测试

    References: #481

  • [mssql]

    修复到数据库URL查询上的自动插入标识

  • [mssql]

    向db-url查询参数添加query_timeout。当前仅适用于pymssql

  • [mssql]

    用pymsql0.8.0测试(现在是lgpl)

oracle

  • [oracle]

    当返回“rowid”作为“按列排序”或与行号一起使用时,oracle dialect将检查正在应用的可选字段,如果不适用,将切换到表pk,即联合。正在检查distinct、group by(rowid无效的其他位置)是否仍然是TODO。允许多态映射到函数。

    References: #436

  • [oracle]

    非pk列上的序列将在插入时正确触发

  • [oracle]

    为已知存在的预取lob列添加了PrefetchingResultProxy支持,修复了

    References: #435

  • [oracle]

    基于同义词实现表的反射,包括跨dblinks

    References: #379

  • [oracle]

    当由于某些权限错误而无法反映相关表时,发出日志警告

    References: #363

misc

  • [postgres]

    更好地反映交替模式表的序列

    References: #442

  • [postgres]

    非pk列上的序列将在插入时正确触发

  • [postgres]

    添加了PGInterval类型、PGinet类型

    References: #444, #460

0.3.4

Released: Tue Jan 23 2007

general

  • [general]

    全球“保险”->“确保”变更。在美国,英语中的“insure”实际上在很大程度上可以与“secure”(字典上这么说)互换,所以我不是完全不识字,但它绝对是次优的“insure”,这是不含糊的。

orm

  • [orm]

    在蠕虫的罐子里戳出第一个洞:说query.select by(someRelationName=someInstance)将创建由“someRelationName”的映射器表示的主键列与“someInstance”中的实际主键的联接。

  • [orm]

    改写了关系如何与“多态”映射器(即具有选择表和多态标志的映射器)交互。更好地确定适当的连接条件,与用户定义的连接条件交互,并支持自引用多态映射器。

  • [orm]

    与多态映射关系有关,在编译关系时会进行一些更深层次的错误检查,以便在关系的两边都有主键引用的情况下检测一个不明确的“primary join”。还收紧了用于定位“关系方向”的条件,将关系的“foreignkey”与“primaryjoin”关联起来。

  • [orm]

    对“具体的”继承映射的概念做了一点改进,尽管这个概念还没有很好地完善(添加了测试用例来支持多态基础之上的具体映射器)。

  • [orm]

    修正同义词()上的“proxy=true”行为

  • [orm]

    修正了删除孤立项基本上不适用于多对多关系的错误,backref的存在通常掩盖了这个症状。

    References: #427

  • [orm]

    向映射器编译步骤添加了互斥体。我不愿意向SA添加任何类型的线程,但这是它真正需要的一个地方,因为映射器通常是“全局的”,并且在正常操作期间它们的状态不会改变,初始编译步骤会显著地修改内部状态,并且此步骤通常不在模块级初始化时发生。(除非您调用compile(),但在第一次请求时

  • [orm]

    实际上实现了“session.merge()”的基本思想。需要更多的测试。

  • [orm]

    添加了“compile_mappers()”函数作为编译所有映射器的快捷方式

  • [orm]

    修复到mapperextension创建u实例,以便实体名称与新实例正确关联

  • [orm]

    对ORM对象实例化的速度增强,迫切需要加载行

  • [orm]

    发送到“cascade”字符串的选项无效将引发异常

    References: #406

  • [orm]

    修复了映射器刷新/过期中的bug,即抢先加载程序没有正确地重新填充项目列表

    References: #407

  • [orm]

    修复以发布更新以确保即使对于非插入/删除方案也更新行

    References: #413

  • [orm]

    如果实际尝试修改实体上的主键值,然后将其刷新,则会添加一条错误消息

    References: #412

sql

  • [sql]

    向resultProxy添加了“fetchmany()”支持

  • [sql]

    添加了对列“key”属性在行中可用的支持 [<key>] /row.<key>

  • [sql]

    将“booleanExpression”从“binaryExpression”更改为子类,这样布尔表达式也可以遵循列子句行为(即label()等)。

  • [sql]

    尾随下划线从func.<xxx>调用中删除,如func.if_()。

  • [sql]

    当select语句的列列表通过对append_column()的单个调用构造时,修复子查询的相关性;这修复了ORM错误,其中嵌套的select语句没有与查询对象生成的主select相关联。

  • [sql]

    对子查询相关的另一个修复,使只有一个FROM元素的子查询 not 关联该单个元素,因为查询中至少需要一个FROM元素。

  • [sql]

    默认的“时区”设置现在为假。这对应于python的日期时间行为以及postgres的时间戳/时间类型(这是目前唯一对时区敏感的方言)。

    References: #414

  • [sql]

    “op()”函数现在被视为“operation”,而不是“comparison”。不同的是,一个操作生成一个binaryExpression,从中可以执行进一步的操作,而比较则生成更严格的booleanExpression

  • [sql]

    尝试将反射的主键列重新定义为非主键会引发错误

  • [sql]

    稍微修改类型系统以支持可以被方言覆盖的typedecorator(好吧,这还不太清楚,它允许下面的mssql调整成为可能)

extensions

  • [extensions]

    添加了“validate=false”参数来分配映射器,如果为true,将确保只命名映射的属性

    References: #426

  • [extensions]

    分配映射器获取“选项”,添加“实例”函数(即myClass.instances())

mysql

  • [mysql]

    MySQL与它在显示创建表期间在外键中使用的引号类型不一致,反射更新以适应所有三种样式。

    References: #420

  • [mysql]

    mysql table create选项现在可以在一个通用的passthru上工作,例如table(…,mysql_engine='innodb',mysql_collate=“latin1_german2_ci”,mysql_auto_increment=“5”,mysql_uuumarg>…),有助于

    References: #418

mssql

  • [mssql]

    添加了nvarchar类型(生成nvarchar),也添加了msunicode,它为nvarchar提供Unicode翻译,而不考虑方言转换的unicode设置。

oracle

  • [oracle]

    轻微的 支持二进制,但仍然需要弄清楚如何插入相当大的值(超过4K)。需要将auto_setinputsizes=true发送到create_engine(),行必须单独完全提取,等等。

firebird

  • [firebird]

    约束创建的顺序将主键放在所有其他约束之前;对于Firebird是必需的,对于其他人来说不是坏主意。

    References: #408

  • [firebird]

    Firebird修复到自动加载多字段外键

    References: #409

  • [firebird]

    FireBird数字类型正确处理类型而不精确

    References: #409

misc

  • [postgres]

    修复到要考虑当前架构的表的初始checkfirst

    References: #424

  • [postgres]

    Postgres有一个可选的“服务器端光标=真”标志,它将使用服务器端光标。这些方法仅适用于获取部分结果,对于处理非常大的无边界结果集是必要的。虽然我们希望这是默认行为,但是不同的环境似乎有不同的结果,并且原因还没有被隔离,所以我们现在将默认关闭该功能。使用最近在psycopg邮件列表中发现的明显未记录的psycopg2行为。

  • [postgres]

    添加了“bigserial”对带有pgbiginteger/autoincrement的postgres表的支持

  • [postgres]

    修复了Postgres反射,以便在模式名称存在时更好地处理;这要归功于jason(at)ncsmags.com

    References: #402

0.3.3

Released: Fri Dec 15 2006
  • [no_tags]

    基于字符串的FROM子句已修复,即select(…,from_obj= [“手机短信”] )

  • [no_tags]

    修复被动删除标志,lazy=none(noload)标志

  • [no_tags]

    添加了处理大型集合的示例/文档

  • [no_tags]

    向sqlachemy命名空间添加了object_session()方法

  • [no_tags]

    修正了QueuePool的错误,使得它能够更好地重新连接到无法访问的数据库(多亏了S_)Bastien Lelong),也修正了Dispose()方法

  • [no_tags]

    使mysql行数正常工作的补丁!

    References: #396

  • [no_tags]

    修复2006/2014错误的mysql catch以正确地重新引发operationalerror异常

0.3.2

Released: Sun Dec 10 2006
  • [no_tags]

    已修复主连接池错误。修复了MySQL不同步的错误,还将防止事务在所有DBS中意外回滚。

    References: #387

  • [no_tags]

    与0.3.1相比,主要的速度增强,使速度恢复到0.2.8级。

  • [no_tags]

    进行了大量有条件的调试日志调用,这些调用需要大量时间来生成日志消息。

  • [no_tags]

    修正了级联规则中的错误,即整个对象图可能在保存/更新级联上不必要地级联。

  • [no_tags]

    属性模块中的各种加速

  • [no_tags]

    会话中的标识映射默认为 不再弱引用 . 要使其具有弱引用,请使用create_session(weak_identity_map=true)修复

    References: #388

  • [no_tags]

    MySQL检测到错误2006(服务器已离开)和2014(命令不同步),并使发生错误的连接失效。

  • [no_tags]

    mysql bool类型修复:

    References: #307

  • [no_tags]

    Postgres反射修复:

    References: #349, #382

  • [no_tags]

    为except、intersect、except all、intersect all添加了关键字

    References: #247

  • [no_tags]

    在assign mapper扩展中分配映射器返回创建的映射器

    References: #2110

  • [no_tags]

    添加了label()函数来选择类,当scalar=true用于创建标量子查询时,即“select x,y,(select max(foo)from table)as foo max from table”

  • [no_tags]

    向ForeignKey添加了OnUpdate和OnDelete关键字参数;如果存在,则传播到基础ForeignKeyConstraint。(但不要向另一个方向传播)

  • [no_tags]

    修正到session.update()以保留传入对象的“脏”状态

  • [no_tags]

    通过in_()函数向in发送可选择项不再在多个选择项中创建“union”;现在只允许in_()函数中的一个可选择项(如果需要union,则自己创建union)

  • [no_tags]

    通过cascade=“none”等改进了对禁用保存更新cascade的支持。

  • [no_tags]

    在relation()中添加了“remote_side”参数,仅与自引用映射器一起使用,以强制父/子关系的方向。替换“foreignkey”参数用于“切换”方向。“foreignkey”参数对于所有用途都已弃用,最终将被映射器上专门用于foreignkey规范的参数替换。

0.3.1

Released: Mon Nov 13 2006

orm

  • [orm]

    如果尚未加载子对象,“删除”级联将加载到所有子对象中。这可以通过在关系()上设置被动删除=真来关闭(即旧行为)。

  • [orm]

    对重新生成的热切查询进行调整,使其不会在循环的热切加载关系(如backrefs)上失败。

  • [orm]

    修复了在生成限制查询时,chengLoad()(nor lazyload())选项没有正确指示查询是否使用“嵌套”的错误。

  • [orm]

    修复了刷新时循环依赖排序中的错误;如果对象A包含与对象B的循环多对一关系,而对象B只是附加到对象A, but 对象B本身没有改变,B的主键属性到A的外键属性的多对一同步不会发生。

    References: #360

  • [orm]

    从query.count的obj参数实现,改进了selectresults的count函数

    References: #325

  • [orm]

    在ORM关系的“级联”步骤中添加断言,以检查附加到父对象的对象类是否适当(即,如果a.items存储b对象,则在a.items附加c时引发错误)

  • [orm]

    新扩展名sqlachemy.ext.associationproxy提供透明的“关联对象”映射。举例说明了新的示例/association/proxied_association.py。

  • [orm]

    改进单表继承以加载目标类下的完整层次结构

  • [orm]

    修正拓扑排序中节点可能出现两次的细微条件,用于

    References: #362

  • [orm]

    拓扑排序、重构的额外返工

    References: #365

  • [orm]

    可以在多个父类上设置某个类型的“删除孤立项”;只有实例未附加到该实例时,该实例才是“孤立项” any 那些父母的

misc

  • [engine/pool]

    一些新的池实用程序类、更新的文档

  • [engine/pool]

    池上的“使用线程本地”默认为假(与创建引擎相同)

  • [engine/pool]

    固定直接执行已编译对象

  • [engine/pool]

    重新编写create_engine()以严格控制输入 * *克沃斯。所有关键字参数必须由方言、连接池和引擎构造函数中的一个使用,否则将引发一个类型错误,它描述与所选方言/池/引擎配置相关的一整套无效Kwarg。

  • [databases/types]

    mysql捕获“describe”上的异常并报告为nosuchtableerror

  • [databases/types]

    对sqlite booleans的进一步修复没有作为默认值工作

  • [databases/types]

    使用模式时固定到Postgres序列引用

0.3.0

Released: Sun Oct 22 2006

general

  • [general]

    日志记录现在通过标准的python“logging”模块实现。echo“关键字参数仍然正常工作,但为其各自的类/实例设置/取消设置日志级别。通过在“sqlacalchemy”名称空间中为记录器设置信息和调试级别,可以直接通过python API控制所有日志记录。类级日志记录在“sqlAlchemy.<module><classname>”下,实例级日志记录在“sqlAlchemy.<module><classname>.0x..<00-ff>”下。测试套件包括“-log info”和“-log debug”参数,这些参数独立于--verbose/--quiet工作。添加到ORM的日志记录允许跟踪映射器配置、行迭代。

  • [general]

    文件生成系统已经过大修,设计更简单,更与降价相结合。

orm

  • [orm]

    修改属性跟踪,以便更智能地检测更改,特别是对于可变类型。typeengine对象现在在定义如何比较两个标量实例方面发挥了更大的作用,包括添加由pickletype实现的可变类型mixin。现在,工作单元将跟踪“脏”列表作为属性管理器检测到更改的所有持久对象的表达式。修复的基本问题是检测pickleType对象的更改,但也将类型处理和“修改”对象检查归纳为更完整和可扩展。

  • [orm]

    对“属性加载器”和“选项”架构的广泛重构。ColumnProperty和PropertyLoader通过可切换的“策略”定义其加载行为,而MapperOptions不再使用映射器/属性复制功能;而是在查询/实例时通过QueryContext和SelectionContext对象进行传播。所有用于处理继承和options()的映射器和属性的内部复制都已被删除;映射器和属性的结构比以前简单得多,并在新的“接口”模块中清楚地列出。

  • [orm]

    与映射器/属性大修相关,对mapper instances()方法进行内部重构,以使用SelectionContext对象跟踪操作过程中的状态。轻微的API破坏:由于更改,MapperExtension上的append_result()和popute_instances()方法现在的方法签名略有不同;希望这些方法到目前为止还没有广泛使用。

  • [orm]

    instances()方法现在移动到query,向后兼容的版本保留在mapper上。

  • [orm]

    添加的包含“eager()mapperOption”,与instances()一起使用,指定应使用结果集中的普通列名(默认情况下)或给定自定义行转换函数进行转换的属性。

  • [orm]

    更多工作单元的重新排列提交方案,以更好地允许循环刷新中的依赖项正常工作…更新了任务遍历/日志记录实现

  • [orm]

    多态映射器(即使用继承)现在按表的顺序在所有继承类中生成insert语句。

    References: #321

  • [orm]

    将自动“行切换”功能添加到映射中,该功能将检测具有相同标识密钥的挂起实例/已删除实例对,并将插入/删除转换为单个更新

  • [orm]

    简化“关联”映射以利用自动“行切换”功能

  • [orm]

    “自定义列表类”现在通过relation()的“collection_class”关键字参数实现。旧方法仍然有效,但已弃用

    References: #212

  • [orm]

    在relation()中添加了“viewOnly”标志,允许构造对flush()进程没有影响的关系。

  • [orm]

    在基本查询选择/获取函数中添加了“lockmode”参数,包括“with_lockmode”函数以获取具有默认锁定模式的查询副本。将“read”/“update”参数转换为选择端的for_update参数。

    References: #292

  • [orm]

    在query/mapper中实现了“版本检查”逻辑,在版本“id”col生效和query时使用。with“lockmode()”用于获取()已加载的实例

  • [orm]

    后更新行为得到改善;在不更新太多行、只更新所需列方面做得更好

    References: #208

  • [orm]

    调整预加载,使其“预加载链”与正常的映射器设置分开,从而防止与延迟加载程序操作发生冲突,修复

    References: #308

  • [orm]

    修复到延迟的组加载

  • [orm]

    session.flush()无法关闭它打开的连接

    References: #346

  • [orm]

    在映射器中添加了“batch=true”标志;如果为false,save_obj将一次完全保存一个对象,包括在_xxxx之前和之后调用

  • [orm]

    向映射器添加了“column_prefix=none”参数;将给定的字符串(通常为“u”)预处理为从映射器表中自动设置的基于列的属性

  • [orm]

    在query.select()的from_obj参数中指定join将替换查询的主表(如果该表位于给定的from_obj中)。这样就可以在查询中生成自定义联接和outerjoin,而不需要向主表添加两次。

    References: #315

  • [orm]

    焦急加载被调整为更仔细地将其左外部联接附加到给定的查询,以查找可能已经设置的自定义“from”子句。

  • [orm]

    将join_添加到和outerjoin_添加到转换方法,以选择结果,根据属性名称建立join/outerjoin条件。还添加了select_from to explicit set from_obj参数。

  • [orm]

    已从映射器中删除“is_primary”标志。

sql

  • [sql] [construction]

    将“for摼update”参数改为接受false/true/“nowait”和“read”,后两个参数仅由Oracle和MySQL解释。

    References: #292

  • [sql] [construction]

    向SQL方言添加了extract()函数(select extract(field from expr))。

  • [sql] [construction]

    booleanExpression包含新的“negate”参数,以指定适当的否定运算符(如果有)。

  • [sql] [construction]

    对“in”或“is”子句进行否定将导致“not in”、“is not”(与“not”(x in y))。

  • [sql] [construction]

    函数对象现在知道在FROM子句中要做什么。他们的行为应该是相同的,除非现在你也可以做像选择这样的事情。( ['*'] ,从OFF Obj= [func.my_function()] )要从结果中获取多个列,甚至可以使用sql.column()构造来命名返回列

    References: #172

schema

  • [schema]

    对架构包进行大量清理,删除不明确的方法,不再需要的方法。稍微限制使用,更强调明确性

  • [schema]

    表和其他可选择文件的“primary_key”属性变成了一个setlike columnCollection对象;是有序的,但不是数字索引的。从同一基础表(如两个别名对象)派生的两个pk之间的比较子句可以通过table1生成。primary_key==table2.primary_key

  • [schema]

    foreign key(constraint)支持“use-alter=true”,通过alter创建/删除一个外键。这允许建立循环的外键关系。

  • [schema]

    从表和列中移除的append_item()方法;最好以内联方式构造表/列/相关对象,但如果需要,请使用append_column()、append_foreign_key()、append_constraint()等。

  • [schema]

    table.create()不再返回表对象,而是没有返回值。通常情况下,表是通过元数据创建的,这更可取,因为它将处理表依赖关系。

  • [schema]

    添加了uniqueconstraint(转到表级)、checkconstraint(转到表级或列级)。

  • [schema]

    index=false/unique=true on column现在创建uniqueconstraint,index=true/unique=false创建普通索引,index=true/unique=true on column创建唯一索引。'列的index'和'unique'关键字参数现在仅为布尔值;对于索引或唯一约束的显式名称和分组,请显式使用uniqueconstraint/index构造。

  • [schema]

    将auto increment=true添加到列;如果显式设置为false,将禁用postgres/mysql/mssql的serial/auto_increment/identity seq的架构生成

  • [schema]

    typeengine对象现在具有处理复制和比较其特定类型值的方法。ORM当前使用的,请参见下文。

  • [schema]

    修正了反射期间发生的一种情况,即当主键列被显式重写时,PrimaryKeyConstraint将同时得到反射列和编程列

  • [schema]

    通常,不推荐使用列和columnelement上的“foreign_key”属性,而使用基于“foreign_keys”列表/集的属性,该属性考虑了一列上的多个外键。foreign_key将返回“foreign_keys”列表/集合中的第一个元素,如果列表为空,则返回none。

sqlite

  • [sqlite]

    sqlite boolean数据类型默认情况下将false/true转换为0/1

  • [sqlite]

    修复到日期/时间(sldate/sltime)类型;现在与Postgres一样有效

    References: #335

oracle

  • [oracle]

    Oracle对cx_oracle.timestamp提供了实验性支持,它要求对光标进行setinputsizes()调用,该调用现在通过Oracle方言的“auto_setinputsizes”标志启用。

firebird

  • [firebird]

    别名不使用“as”

  • [firebird]

    在反射不存在的表时正确引发NoSuchTableError

misc

  • [ms-sql]

    修复了错误261(MS-SQL区分大小写数据库的表反射已中断)

  • [ms-sql]

    现在可以为pymsql指定端口

  • [ms-sql]

    引入新的“自动插入标识”选项,当为标识列指定值时,在“设置标识插入”模式之间自动切换

  • [ms-sql]

    现在支持多列外键

  • [ms-sql]

    固定到反射日期/日期时间列

  • [ms-sql]

    增加了nchar和nvarchar类型支持

  • [connections/pooling/execution]

    连接池跟踪打开的游标,如果连接返回到仍打开游标的池,则自动关闭它们。可能会受到选项的影响,这些选项会导致它引发错误,或者什么都不做。修复MySQL等问题

  • [connections/pooling/execution]

    修复了连接在提交/回滚后不会丢失其事务的错误

  • [connections/pooling/execution]

    已将scalar()方法添加到composedSQLEngine、resultProxy

  • [connections/pooling/execution]

    resultProxy将在resultProxy本身关闭时关闭()基础光标。这将自动关闭已提取所有行(或已调用scalar())的resultProxy对象的光标。

  • [connections/pooling/execution]

    resultProxy.fetchall()内部使用dbapi fetchall()以提高效率,并添加到mapper迭代中(由michael twomey提供)

Previous: 0.4换热器 Next: 0.2换热器