SQLAlchemy 1.1文档
更改和迁移
- What’s New in SQLAlchemy 1.1?
- 1.1 Changelog
- 1.0 Changelog
- 0.9 Changelog
- 0.8 Changelog
- 0.7 Changelog
- 0.6 Changelog
- 0.5 Changelog
- 0.4 Changelog
- 0.3 Changelog
- 0.2 Changelog
- 0.1更新日志 ¶
- What’s New in SQLAlchemy 1.0?
- What’s New in SQLAlchemy 0.9?
- What’s New in SQLAlchemy 0.8?
- What’s New in SQLAlchemy 0.7?
- What’s New in SQLAlchemy 0.6?
- What’s new in SQLAlchemy 0.5?
- What’s new in SQLAlchemy 0.4?
项目版本
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,上次错过了¶
通过关联表调整以允许从表到它自己的多对多关系¶
create_engine使用cgi.parse_qsl读取查询字符串(在0.2窗口之外)¶
调整为CAST运算符¶
固定函数名称LOCAL_TIME / LOCAL_TIMESTAMP - > LOCALTIME / LOCALTIMESTAMP ¶
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.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)¶