版本:1.1.0b2 |发布日期:2016年7月1日

SQLAlchemy 1.1文档

0.1 Changelog

0.1.7 ¶ T0>

发布:2006年5月5日星期五
  • 对拓扑排序算法进行了一些修复

  • 增加了对Postgres的DISTINCT ON支持(只提供distinct = [col1,col2 ..])

  • 在sql表达式中添加了__mod__(%运算符)

  • “order_by”从继承映射器继承的映射器属性

  • 修复映射器UPDATES / DELETEs 时使用的列类型

  • with convert_unicode = True,反射失败,已被修复

  • 类型的类型类型!仍然没有工作....必须再次使用TypeDecorator:(

  • mysql binary type converts array output to buffer, fixes PickleType

  • 一次性修复attributes.py内存泄漏

  • unittests根据支持每一个的数据库进行限定

  • 固定的错误,其中列默认会破坏插入对象的VALUES子句

  • 固定的错误,其中table def w / schema name会强制引擎连接

  • fix for parenthesis to work correctly with subqueries in INSERT/UPDATE

  • HistoryArraySet gets extend() method

  • 除了= 之外,还有其他比较运算符的lazyload支持

  • lazyload修复连接条件中的两个比较指向同一列

  • 向映射器添加了“construct_new”标志,将使用__new__创建实例而不是__init__(0.2中的标准)

  • 将selectresults.py添加到SVN,上次错过了

  • 通过关联表调整以允许从表到它自己的多对多关系

  • 对多态示例使用的“translate_row”函数的小修复

  • create_engine使用cgi.parse_qsl读取查询字符串(在0.2窗口之外)

  • 调整为CAST运算符

  • 固定函数名称LOCAL_TIME / LOCAL_TIMESTAMP - > LOCALTIME / LOCALTIMESTAMP

  • 在编译中的ORDER BY / HAVING的固定顺序¶

0.1.6 ¶ T0>

发布日期:2006年4月12日
  • support for MS-SQL added courtesy Rick Morrison, Runar Petursson

  • J. Ellis 中的最新SQLSoup

  • ActiveMapper has preliminary support for inheritance (Jeff Watkins)

  • 使用函数“install_mods(* modnames)”添加了一个“mods”系统,该系统允许可插入模块修改/增加核心功能。

  • added the first “mod”, SelectResults, which modifies mapper selects to return generators that turn ranges into LIMIT/OFFSET queries (Jonas Borgstr?

  • factored out querying capabilities of Mapper into a separate Query object which is Session-centric. 这提高了mapper.using(session)的性能,并使其他事情成为可能。

  • 对象存储/会话重构,保存对象的官方方式现在通过flush()方法。Session的开始/提交功能被分解到LegacySession中,该功能仍然作为默认行为建立,直到0.2系列。

  • 类型系统在查询编译时绑定到引擎,而不是架构构建时间。这简化了类型系统以及ProxyEngine。

  • 向mapper添加了'version_id'关键字参数。这个关键字应该引用一个Integer类型的Column对象,最好是不可为空的,这个对象将被用在映射的表上以跟踪版本号。这个数字在每个保存操作时递增,并在UPDATE / DELETE条件中指定,以便将它计入返回的行计数中,如果收到的值不是预期的计数,将导致并发错误。

  • 在映射器中添加了“entity_name”关键字参数。映射器现在通过类对象与一个类关联,并且还有一个可选的entity_name参数,该参数是一个默认为None的字符串。可以为一个类创建任意数量的主映射器,并由实体名称限定。这些类的实例将通过它们的entity_name限定的映射器发出所有的加载和保存操作,并为其他等价对象在身份映射中维护一个单独的身份。

  • overhaul to the attributes system. 代码已被澄清,并且也被固定为支持对象属性的正确多态行为。

  • 在选择对象中添加了“for_update”标志

  • 针对backrefs 的一些修复

  • 修复postgres1 DateTime类型

  • 文档页面主要切换到Markdown语法

0.1.5 ¶ T0>

发布日期:2006年3月27日
  • 将SQLSession概念添加到了SQLEngine。此对象跟踪从连接池中检索连接以及正在进行的事务。方法push_session()和pop_session()被添加到SQLEngine中,该方法将新的SQLSession推入/引出到引擎上,允许在前一个嵌套的第二个连接上进行操作,从而实现嵌套事务。有关SQLSession的其他技巧肯定会在后面讨论。

  • 将nest_on参数添加到objectstore.Session。这是一个单独的SQLEngine或每次此Session成为活动会话时(通过objectstore.push_session()或等价物)调用push_session()/ pop_session()的引擎列表。这允许工作单元Session利用嵌套事务特性而不明确地调用引擎上的push_session / pop_session。

  • 分解对象库/单元工作以将“会话范围”与“非常繁重”分开

  • 向MapperExtension添加了populate_instance()方法。允许扩展来修改对象属性的数量。此方法可以调用另一个映射器上的populate_instance()方法将属性填充从一个映射器转换为另一个映射器;一些行翻译逻辑也是内置的,以帮助解决这个问题。

  • fixed Oracle8-compatibility “use_ansi” flag which converts JOINs to comparisons with the = and (+) operators, passes basic unittests

  • 调整到Oracle LIMIT / OFFSET支持

  • Oracle反射使用ALL _ **视图而不是USER _ **来从中获取更大的东西列表

  • 修复了Oracle外键反映

    参考文献:#105

  • objectstore.commit(obj1, obj2,...) adds an extra step to seek out private relations on properties and delete child objects, even though its not a global commit

  • lots and lots of fixes to mappers which use inheritance, strengthened the concept of relations on a mapper being made towards the “local” table for that mapper, not the tables it inherits. 允许更复杂的组合模式与懒惰/渴望加载一起工作。

  • 增加了对映射器基于同一个表继承的支持,只需指定与父/子映射器相同的表即可。

  • 在实例化和填充新对象方面,对属性系统进行了一些小的改进。

  • 修正了MySQL二进制单元测试

  • INSERT可以接收子句元素作为VALUES参数,而不仅仅是文字值

  • 支持调用多重派生函数,即schema.mypkg.func()

  • added J. Ellis’ SQLSoup module to extensions package

  • 添加了“多态”示例,说明从一个映射器加载多个对象类型的方法,其中第二个使用新的populate_instance()方法。对映射程序的小改进,UNION结构可以帮助中的例子

  • 改进/修复session.refresh()/ session.expire()(之前可能被称为“invalidate”..)

  • 添加了session.expunge(),它完全从当前会话中删除一个对象

  • 添加了* args,** kwargs pass-thru to engine.transaction(func)允许更容易创建事务化装饰器函数

  • 向ResultProxy添加了迭代器接口:“for result in result:...”

  • 将断言添加到tx = session.begin(); tx.rollback(); tx.begin(),即不能在rollback()之后使用它

  • 将绑定参数修复日期转换添加到SQLite,使日期能够与pysqlite1一起使用

  • 改进子查询以更智能地构造它们的FROM子句

    参考文献:#116

  • 将PickleType添加到类型中。

  • 修正了与绑定参数有关的列标签的两个错误:绑定参数键名,它们现在在所有相关情况下从列“标签”生成以利用超出名称长度的规则,并检查与名为与“tablename_colname”相同的列的特殊冲突添加了

  • 对工作单元文档,其他文​​档部分进行大修。

  • 固定属性错误,如果一个对象被提交,那么它的延迟加载列表如果没有被加载就会被吹走

  • 将unique_connection()方法添加到引擎,连接池返回不属于线程本地上下文或任何当前事务的连接

  • 将invalidate()函数添加到池连接。将从池中删除连接。仍然需要让引擎自动重新连接到一个陈旧的数据库。

  • added distinct() function to column elements so you can do func.count(mycol.distinct())

  • 将“always_refresh”标志添加到Mapper中,创建一个映射器,该映射器将始终刷新其从数据库中获取/选择的对象的属性,并覆盖所做的任何更改。

0.1.4 ¶ T0>

发布日期:2006年3月13日
  • create_engine()现在使用泛化参数;主机/主机名,db / dbname /数据库,密码/密码等。为所有引擎连接。使得引擎URI更“普遍”

  • 使用标记“scalar = True”添加了对嵌入到列子句中的SELECT语句的支持

  • another overhaul to EagerLoading when used in conjunction with mappers that inherit; improvements to eager loads figuring out their aliased queries correctly, also relations set up against a mapper with inherited mappers will create joins against the table that is specific to the mapper itself (i.e. and not any tables that are inherited/are further down the inheritance chain), this can be overridden by using custom primary/secondary joins.

  • added J.Ellis patch to mapper.py so that selectone() throws an exception if query returns more than one object row, selectfirst() to not throw the exception. 还添加了selectfirst_by(与get_by同义)和selectone_by

  • 将onupdate参数添加到Column中,将在更新语句中执行SQL / python.Also将“for_update = True”添加到所有DefaultGenerator子类

  • 增加了对Andrija Zaric贡献的Oracle表反射的支持;仍然存在一些关于复合主键/字典选择的错误

  • 在初始的Firebird模块中检查,等待测试。

  • 添加了sql.ClauseParameters字典对象作为compiled.get_params()的结果,对绑定参数进行了后期处理,以便原始值更易于访问

  • 索引,列默认值,连接池,引擎构建的更多文档

  • overhaul to the construction of the types system. 使用更简单的继承模式,以便任何泛型类型都可以很容易地进行子类化,而不需要TypeDecorator。

  • 将“convert_unicode = False”参数添加到SQLEngine中,将导致所有String类型执行unicode编码/解码(使字符串像Unicodes一样)

  • 在引擎中添加了'encoding =“utf8”'参数。给定的编码将用于Unicode类型中的所有编码/解码调用以及convert_unicode = True时的字符串。

  • 改进了针对UNION映射的支持,增加了polymorph.py示例来说明针对UNION的多类映射

  • 修复SQLite LIMIT / OFFSET语法

  • 修复Oracle LIMIT语法

  • 添加了backref()函数,允许反向引用将关键字参数传递给backref。

  • Sequences和ColumnDefault对象可以执行execute()/ scalar()standalone

  • SQL functions (i.e. func.foo()) can do execute()/scalar() standalone

  • 修复SQL函数,以便ANSI标准函数(即current_timestamp等)不指定括号。所有其他功能都可以。

  • 将settattr_clean和append_clean添加到了SmartProperty中,该属性在不触发“脏”事件或任何历史的情况下设置属性。用作:myclass.prop1.setattr_clean(myobject,'hi')

  • 改进了对映射器使用时对列默认值的支持;映射器将从语句的已执行绑定参数(预转换)中提取预先执行的默认值,以将其填充到已保存的对象的属性中;如果任何PassiveDefaults已经启动,将取而代之从数据库中获取行来填充对象。

  • 将'get_session()。invalidate(* obj)'方法添加到对象库,实例将在下一次访问属性时自动刷新()。

  • 包含“engine”关键字参数的SQL func调用的改进,以便它们可以是execute()d或scalar()ed standalone,也可以将func访问器添加到SQLEngine

  • 修复了MySQL4自定义表引擎,即TYPE而不是ENGINE

  • 略有增强的日志记录,包括时间戳记和可配置的格式化系统,以代替全面的日志记录系统

  • 对TG组的ActiveMapper类的改进,包括多对多关系

  • 在mysql 中添加了Double和TinyInt支持

0.1.3 ¶ T0>

发布于:2006年3月2日
  • 完成“post_update”功能后,将在插入之前和删除之后添加第二个更新语句,以便协调一个没有创建任何依赖关系的关系;在持续存在两个相互依赖的行时使用

  • 完成了mapper.using(session)函数,本地化的per-object会话功能;对象可以作为本地用户定义的Session 来声明和操作

  • 使用多个表修复Oracle“row_number over”子句

  • mapper.get() was not selecting multiple-keyed objects if the mapper’s table was a join, such as in an inheritance relationship, this is fixed.

  • overhaul to sql/schema packages so that the sql package can run all on its own, producing selects, inserts, etc. 没有任何引擎依赖。基于新的TableClause / ColumnClause词法对象构建。架构的表/列对象是它们的“物理”子类。简化了schema / sql关系,扩展(如proxyengine),并大幅提高整体性能。删除困扰0.1.1的整个getattr()行为。

  • refactoring of how the mapper “synchronizes” data between two objects into a separate module, works better with properties attached to a mapper that has an additional inheritance relationship to one of the related tables, also the same methodology used to synchronize parent/child objects now used by mapper to synchronize between inherited and inheriting mappers.

  • 使objectstore“检查非身份映射”更积极,将在对象属性被修改或删除对象时执行检查

  • Index object fully implemented, can be constructed standalone, or via “index” and “unique” arguments on Columns.

  • 将“convert_unicode”标志添加到SQLEngine中,将所有的String / CHAR类型视为Unicode类型,并在绑定参数和结果集侧进行raw-byte / utf-8转换。 T1>

  • postgres维护一个ANSI函数列表,它必须没有圆括号,因此没有参数的函数调用一致地工作

  • 表格可以在没有指定引擎的情况下创建。这会将其引擎默认为一个模块范围的“默认引擎”,它是一个ProxyEngine。这个引擎可以通过函数“global_connect”来连接。

  • 将“refresh(* obj)”方法无条件地添加到objectstore / Session以重新加载任何对象集合的属性

0.1.2 ¶ T0>

发布:2006年2月24日星期五
  • 修复了架构中的递归调用,该架构以某种方式运行了994次,然后正常返回。什么都不打破,放慢了一切。感谢jpellerin找到它。

0.1.1 ¶ T0>

发布日期:2006年2月23日
  • 对Function类进行小修改,以便具有func.foo()的表达式使用Function对象的类型(即左侧)作为布尔表达式的类型,而不是另一侧移动目标(变更集1020)。

  • 用backrefs创建自引用映射器稍微简单一些(但仍然不那么容易 - 更改集1019)

  • 修复了一对一映射(变更集1015)

  • psycopg1无固定日期/时间问题(变更集1005)

  • 与postgres相关的两个问题,因为不赞成使用oid,所以不想给你“lastrowid”:

    • 即使这不是PassiveDefault的想法,预先明确执行的主键col do上的postgres数据库端默认值。这是因为列上的序列被反映为PassiveDefaults,但需要在主键列上显式执行,因此我们知道我们刚插入的内容。
    • 如果你确实添加了一行有一堆数据库端默认值的行,并且PassiveDefault事情是以旧的方式工作的,也就是说他们只是在数据库端执行,那么“无法获取没有OID的行”异常发生也不会发生,除非有人(通常是ORM)明确要求它。

  • 使用engine.execute_compiled修复了一个小故障,它正在创建第二个ResultProxy,它被扔掉了。

  • 开始在对象属性中实现更新的逻辑。您现在可以说myclass.attr.property,它将为您提供与该属性相对应的PropertyLoader,即myclass.mapper.props ['attr']

  • 急切的加载已经在内部进行彻底检查,以便随时使用别名。现在可以创建更复杂的急切加载链,而不需要明确的“使用别名”类型指令。EagerLoader代码现在也更加简单。

  • 一个新的有点实验性的标志“use_update”添加到关系中,表明这个关系应该由第二个UPDATE语句处理,无论是在主INSERT之后还是在主DELETE之前。处理循环行依赖关系。

  • 添加了异常模块,所有引发的异常(除了一些KeyError / AttributeError异常)都从这些类下降。

  • 使用MySQL修复日期类型,返回timedelta转换为datetime.time

  • 两阶段objectstore.commit操作(即begin / commit)现在返回一个事务对象(SessionTrans),以更清楚地指示事务边界。

  • 具有添加到模式的创建/删除支持的索引对象

  • 修复postgres,根据正在进行的“我们无法从postgres获取插入的行”问题,它会在表中明确预先执行PassiveDefault(如果它是主键列)问题¶ T1>

  • 更改为获取postgres表defs的information_schema查询,现在使用显式JOIN关键字,因为一个用户使用8.1

  • 修复engine.process_defaults,使其可以正确使用具有不同列名/列键的表(changset 982)

  • 一个列只能附加到一个表中 - 现在已声明

  • postgres时间类型从时间类型下降

  • 修复所有测试,以便运行类型测试(现在命名为testtypes)

  • 修复Join对象,以便正确地导出其外键(cs 973)

  • 使用继承固定的映射器创建关系(cs 973)