版本: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 ..])

  • 将__mod__(%运算符)添加到sql表达式

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

  • fix to column type used when mapper UPDATES/DELETEs

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

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

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

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

  • 单元测试是基于支持每一个的数据库进行限定

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

  • fixed bug where table def w/ schema name would force engine connection

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

  • HistoryArraySet gets extend() method

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

  • lazyload fix where two comparisons in the join condition point to the samem column

  • 在映射器中添加了“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

  • the latest SQLSoup from J. Ellis

  • ActiveMapper has preliminary support for inheritance (Jeff Watkins)

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

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

  • 将查询Mapper的功能分解为单独的以Session为中心的Query对象。这提高了mapper.using(session)的性能,并使其他事情成为可能。

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

  • types system is bound to an engine at query compile time, not schema construction time. 这简化了类型系统以及ProxyEngine。

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

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

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

  • 将“for_update”标志添加到选择对象

  • 对backrefs 的一些修复

  • 修复postgres1的DateTime类型

  • documentation pages mostly switched over to Markdown syntax

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。

  • 除了将“会话范围”与“非常繁重”分开的对象库/单元工作外,

  • added populate_instance() method to MapperExtension. 允许扩展来修改对象属性的数量。此方法可以调用另一个映射器上的populate_instance()方法将属性填充从一个映射器代理到另一个映射器;一些行翻译逻辑也是内置的,以帮助这一点。

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

  • 调整到Oracle LIMIT / OFFSET支持

  • Oracle reflection uses ALL_** views instead of USER_** to get larger list of stuff to reflect from

  • 修复了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二进制单元测试

  • INSERTs can receive clause elements as VALUES arguments, not just literal values

  • 支持调用多个被加密的函数,即schema.mypkg.func()

  • added J. Ellis’ SQLSoup module to extensions package

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

  • improvements/fixes to session.refresh()/session.expire() (which may have been called “invalidate” earlier..)

  • 添加了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添加到类型中。

  • fixed two bugs with column labels with regards to bind parameters: bind param keynames they are now generated from a column “label” in all relevant cases to take advantage of excess-name-length rules, and checks for a peculiar collision against a column named the same as “tablename_colname” added

  • major overhaul to unit of work documentation, other documentation sections.

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

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

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

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

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

0.1.4 ¶ T0>

发行日期:2006年3月13日
  • create_engine() now uses genericized parameters; host/hostname, db/dbname/database, password/passwd, etc. 为所有引擎连接。使得引擎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

  • added onupdate parameter to Column, will exec SQL/python upon an update statement.Also adds “for_update=True” to all DefaultGenerator subclasses

  • added support for Oracle table reflection contributed by Andrija Zaric; still some bugs to work out regarding composite primary keys/dictionary selection

  • checked in an initial Firebird module, awaiting testing.

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

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

  • overhaul to the construction of the types system. uses a simpler inheritance pattern so that any of the generic types can be easily subclassed, with no need for TypeDecorator.

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

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

  • improved support for mapping against UNIONs, added polymorph.py example to illustrate multi-class mapping against a UNION

  • 修复SQLite LIMIT / OFFSET语法

  • 修复了Oracle LIMIT语法

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

  • Sequences and ColumnDefault objects can do 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')

  • improved support to column defaults when used by mappers; mappers will pull pre-executed defaults from statement’s executed bind parameters (pre-conversion) to populate them into a saved object’s attributes; if any PassiveDefaults have fired off, will instead post-fetch the row from the DB to populate the object.

  • added ‘get_session().invalidate(*obj)’ method to objectstore, instances will refresh() themselves upon the next attribute access.

  • improvements to SQL func calls including an “engine” keyword argument so they can be execute()d or scalar()ed standalone, also added func accessor to SQLEngine

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

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

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

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

0.1.3 ¶ T0>

发行日期:2006年3月2日
  • completed “post_update” feature, will add a second update statement before inserts and after deletes in order to reconcile a relationship without any dependencies being created; used when persisting two rows that are dependent on each other

  • completed mapper.using(session) function, localized per-object Session functionality; objects can be declared and manipulated as local to any user-defined 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 maintains a list of ANSI functions that must have no parenthesis so function calls with no arguments work consistently

  • 可以在没有指定引擎的情况下创建表。这将默认他们的引擎到一个模块范围的“默认引擎”这是一个ProxyEngine。这个引擎可以通过函数“global_connect”。连接

  • 将“refresh(* obj)”方法无条件地从数据库中重新加载到对象存储/会话中

0.1.2 ¶ T0>

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

0.1.1 ¶ T0>

发布日期:2006年2月23日
  • small fix to Function class so that expressions with a func.foo() use the type of the Function object (i.e. the left side) as the type of the boolean expression, not the other side which is more of a moving target (changeset 1020).

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

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

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

  • 与postgres相关的两个问题,由于不赞成使用oid,所以不希望给你“lastrowid”

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

  • 用engine.execute_compiled修正了一个小错误,它是在第二个ResultProxy被扔掉的地方。

  • 开始在对象属性中实现更新的逻辑。你现在可以说myclass.attr.property,它会给你对应于该属性的PropertyLoader,即myclass.mapper.props ['attr']

  • eager loading has been internally overhauled to use aliases at all times. 现在可以创建更复杂的急切加载链,而不需要明确的“使用别名”类型的指令。EagerLoader代码现在也简单得多。

  • a new somewhat experimental flag “use_update” added to relations, indicates that this relationship should be handled by a second UPDATE statement, either after a primary INSERT or before a primary DELETE. 处理循环行依赖关系。

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

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

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

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

  • 修复postgres,如果它是一个主键列,它将显式预先执行一个表的PassiveDefault,依据正在进行的“我们不能从postgres获取插入的行”问题 T1>

  • change to information_schema query that gets back postgres table defs, now uses explicit JOIN keyword, since one user had faster performance with 8.1

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

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

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

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

  • fix to Join object so that it correctly exports its foreign keys (cs 973)

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