SqlAlchemy 2.0 中文文档(七十一)(2)https://developer.aliyun.com/article/1562394
0.2.6
发布日期:Thu Jul 20 2006
- [无标签]
对模式进行了大规模改进,以允许真正的复合主键和外键约束,通过新的 ForeignKeyConstraint 和 PrimaryKeyConstraint 对象。现有的主键/外键创建方法没有改变,但在幕后使用这些新对象。表的创建和反射现在更加面向表而不是面向列。
参考:#76 - [无标签]
对 MapperExtension 调用方案进行了彻底改进,之前的工作效果不是很好 - [无标签]
对 ActiveMapper 进行了调整,支持自引用关系 - [无标签]
对 objectstore(在 activemapper/threadlocal 中)进行了轻微重新排列,以便 SessionContext 被引用为 ‘.context’ 而不是直接子类化。 - [无标签]
如果在导入 activemapper 时激活了 mod,activemapper 将使用 threadlocal 的 objectstore - [无标签]
对 URL 正则表达式进行了小修复,以允许带有 ‘@’ 的文件名 - [无标签]
修复了 Session expunge/update 等的问题…需要更多清理。 - [无标签]
select_table mappers 仍然 不总是编译 - [无标签]
修复了 Boolean 数据类型 - [无标签]
将 count()/count_by() 添加到 assignmapper 代理的方法列表中;这也将它们添加到 activemapper 中 - [无标签]
连接异常包装在 DBAPIError 中 - [无标签]
ActiveMapper 现在支持从数据库自动加载列定义,如果在映射内部类中提供了 autoload = True 属性。目前这不支持反射任何关系。 - [无标签]
延迟列加载可能会在某些情况下破坏 flush() 中的连接状态,已修复 - [无标签]
expunge() 在级联时无法工作,已修复。 - [无标签]
修复了级联操作中的潜在无限循环 - [无标签]
添加了“synonym()”函数,应用于属性,使一个属性名与另一个属性名相同,以便覆盖属性并允许原始属性名在 select_by() 中可访问。 - [无标签]
修复了在子句构造中的类型问题,特别有助于 polymorphic_union 的类型问题(CAST/ColumnClause 将其类型传播到代理列) - [无标签]
映射器编译工作正在进行中,总有一天会成功……将 MapperProperty 对象的初始化移动到所有映射器创建后,以更好地处理循环编译。现在所有属性都调用 do_init()方法,如果有的话,它们更加了解自己的“继承”状态。 - [无标签]
禁止在自引用关系或与继承映射器(也是自引用关系)的关系上急切加载。 - [无标签]
减少了查询._get 中的绑定参数大小,以取悦挑剔的 oracle。
参考:#244 - [无标签]
在 table.create()/table.drop()和 table.exists()中添加了‘checkfirst’参数。
参考:#234 - [无标签]
一些其他正在进行的继承修复。
参考:#245 - [无标签]
属性/backref/orphan/history-tracking 调整如常…
0.2.5
发布日期:2006 年 7 月 8 日 星期六
- [无标签]
修复了 select_by()中的无限循环错误,如果遍历到相互引用的两个映射器。 - [无标签]
将所有 unittests 升级为将‘./lib/’插入 sys.path,解决了新的 setuptools PYTHONPATH 破坏行为。 - [无标签]
进一步修复属性/依赖关系等等… - [无标签]
对于未连接 DynamicMetaData 时的错误处理进行了改进。 - [无标签]
MS-SQL 支持基本正常(使用 pymssql 进行测试)。 - [无标签]
在组内的 UPDATE 和 DELETE 语句的排序现在按照主键值的顺序进行,以获得更确定的排序。 - [无标签]
现在每个对象的 after_insert/delete/update 映射器扩展都是按对象而不是按对象-按表调用的。 - [无标签]
进一步修复/重构映射器编译。
0.2.4
发布日期:2006 年 6 月 27 日 星期二
- [无标签]
当映射器在映射类上设置 init.name 时,支持 python 2.3 的 try/except。 - [无标签]
修复了线程本地引擎仍会自动提交的错误,尽管事务正在进行中。 - [无标签]
惰性加载和延迟加载操作需要父对象在会话中才能执行操作;而以前操作只会返回一个空列表或 None,现在会引发异常。 - [无标签]
如果给定对象曾经附加到的会话被垃圾回收,Session.update()会稍微宽松一些;否则仍然需要显式从先前的会话中删除实例。 - [无标签]
修复了映射器编译,检查更多错误条件。 - [无标签]
修复了与排序/限制/偏移量结合使用时的急切加载小问题。 - [无标签]
非常引人注目:在‘CREATE TABLE’和‘(<其余部分>’之间添加了一个空格,因为这就是 MySQL 指示非保留字表名的方式……
参考:#206 - [无标签]
进一步修复继承,与许多对多关系相��的正确保存。 - [无标签]
修复了指定 mysql 方言的显式模块时的错误。 - [无标签]
当 QueuePool 超时时,会引发 TimeoutError 而不是错误地建立另一个连接 - [无标签]
在池中使用 Queue.Queue 的用法已被替换为一个本地修改版本(在 py2.3/2.4 中有效!),它使用 threading.RLock 作为互斥锁。这是为了修复一个报告的情况,其中 ConnectionFairy 的 del()方法在 Queue 的 get()方法中被调用,然后通过 put()方法将其连接返回给 Queue,除非使用 threading.RLock,否则会导致可重入挂起。 - [无标签]
如果主键列有外键约束,postgres 不会在主键列上放置 SERIAL 关键字 - [无标签]
ConnectionFairy 上的 cursor()方法允许传播特定于数据库的扩展参数
参考:#221 - [无标签]
惰性加载绑定参数正确传播列类型
参考:#225 - [无标签]
新的 MySQL 类型:MSEnum、MSTinyText、MSMediumText、MSLongText 等。对于数字类型中的 MS 特定长度/精度参数提供更多支持,补丁由 Mike Bernson 提供 - [无标签]
对连接池 invalidate()进行了一些修复
参考:#224
0.2.3
发布日期:2006 年 6 月 17 日(星期六)
- [无标签]
对映射器编译进行了彻底的改造。这允许映射器以任何顺序构建,并且它们之间的关系在首次使用映射器时编译。 - [无标签]
修复了级联行为中的一个相当严重的速度瓶颈,特别是在使用反向引用时 - [无标签]
属性仪器模块已完全重写;现在更简单、更清晰,稍微更快。一个属性的“历史”不再在每次更改时进行微观管理,而是在实例首次加载时创建一个“CommittedState”对象的一部分。HistoryArraySet 已经消失,列表属性的行为现在更加开放(即它们不再是集合)。 - [无标签]
内部使用 py2.4 的“set”构造,当“set”不可用/需要排序时,会回退到 sets.Set。 - [无标签]
修复了事务控制的问题,使得重复的 rollback()调用不会失败(在更大的 try/except 事务块中 flush()引发异常时会失败得相当严重) - [无标签]
”relation()“的”foreignkey“参数也可以是一个列表。修复了自动外键检测
参考:#151 - [无标签]
修复了模式名称的表在 MetaData 对象中未正确索引的 bug - [无标签]
修复了重新定义“key”属性的 Column 未进行类型转换的 bug
参考:#207 - [无标签]
修复了 URL 的‘port’属性,如果存在的话,应该是一个整数 - [无标签]
修复了一个旧 bug,即如果一个映射为“secondary”的多对多表有额外列,则删除操作不起作用 - [无标签]
修复了针对 UNION 查询的映射错误 - [无标签]
修复了当没有 DB 驱动程序时抛出的错误异常类 - [无标签]
当反射一个不存在的表时,添加了 NonExistentTable 异常抛出
参考:#138 - [无标签]
对 ActiveMapper 进行了小修复,涉及一对一反向引用,其他重构 - [无标签]
映射类中重写的构造函数从原始类获取 name 和 doc - [无标签]
修复了 selectresult.py 中关于映射扩展的小错误
参考:#200 - [无标签]
对 cascade_mappers 进行了小调整,目前支持程度不是很强 - [无标签]
对 between()、column.between()进行了一些修复,更好地传播类型信息
参考:#202 - [无标签]
如果对象无法构造,则不会添加到会话中
参考:#203 - [无标签]
CAST 函数已经成为自己的子句对象,并在 ansicompiler 中具有自己的编译函数;允许 MySQL 静默忽略大多数 CAST 调用,因为 MySQL 似乎只支持具有 Date 类型的标准 CAST 语法。为字符串、整数等提供与 MySQL 兼容的 CAST 支持,一个 TODO
0.2.2
发布日期:2006 年 6 月 5 日星期一
- [无标签]
对多态继承行为进行了重大改进,使其能够与邻接列表表结构一起使用
参考:#190 - [无标签]
对继承关系进行了重大修复和重构,增加了更多单元测试 - [无标签]
修复了 create_engine()中的“echo_pool”标志 - [无标签]
修复了文档中的错误信息,删除了与 threadlocal 策略一起使用 close()不安全的不正确信息(完全安全!) - [无标签]
create_engine()可以接受字符串或 Unicode 格式的 URL
参考:#188 - [无标签]
firebird 支持部分完成;感谢 James Ralston 和 Brad Clements 的努力。 - [无标签]
Oracle 的 url 转换出现问题,已修复,如果‘database’字段存在,则将 host/port/sid 传递给 cx_oracle 的 makedsn(),否则使用‘host’字段中的直接 TNS 名称 - [无标签]
修复了使用 unicode 条件进行 query.get()/query.load()的问题 - [无标签]
selectables 上的 count()函数现在使用表主键或第一列而不是“1”作为条件,还使用标签“rowcount”而不是“count”。 - [无标签]
对“映射到多个表”功能进行了基本清理,更正确地记录 - [无标签]
恢复了 global_connect()函数,连接到名为“default_metadata”的 DynamicMetaData 实例。如果在 Table 中不使用 MetaData 参数,则将使用默认元数据。 - [无标签]
修复了会话级联行为、entity_name 传播的问题 - [无标签]
将 unittest 重新组织到子目录中 - [无标签]
对 threadlocal 连接嵌套模式进行了更多修复
0.2.1
发布日期:Mon May 29 2006
- [无标签]
pool
参数传递给 create_engine()方法 - [无标签]
修复了 URL,如果未解析则引发异常,不会将空字段传递给数据库连接字符串(例如像user:host@/db
这样的字符串在 postgres 上会出错)。 - [无标签]
在 Mapper 插入并尝试获取新主键值时进行了小修复 - [无标签]
重写了 TLEngine 的一半,用于“strategy=”threadlocal”的 ComposedSQLEngine。现在它正确地实现了 engine.begin()/engine.commit(),与 connection.begin()/trans.commit()完全嵌套。添加了约六个单元测试。 - [无标签]
在 pool.Pool 中有一个主要的“duh”,忘记将 WeakValueDictionary 放回。应该检查此项的单元测试也被悄悄地遗漏了。修复了单元测试以确保 ConnectionFairy 正确地退出作用域。 - [无标签]
给 SingletonThreadPool 添加了占位符 dispose()方法,但目前什么也没做 - [无标签]
当引发异常时自动调用 rollback(),但仅在没有正在进行的事务时(即更像是自动提交)。 - [无标签]
修复了在 sqlite 中没有 sqlite 模块时引发异常的问题 - [无标签]
为关联对象文档添加了额外的示例细节 - [无标签]
Connection 增加了对已关闭的检查
0.2.0
发布日期:Sat May 27 2006
- [无标签]
对引擎系统进行了全面改造,以前是 SQLEngine 现在是由各种组件组成的 ComposedSQLEngine,包括方言、连接提供程序等。这影响了所有的 db 模块以及 Session 和 Mapper。 - [无标签]
create_engine 现在只接受 RFC-1738 样式的字符串:driver://user:password@host:port/database
更新 此格式通常但并非完全符合 RFC-1738,包括在“scheme”部分接受下划线,而不是短横线或点。 - [无标签]
对连接作用域方法进行了全面重写,Connection 对象现在可以直接执行子句元素,明确添加了“close”以及引擎/ORM 中的支持,以正确处理关闭,不再依赖于内部的 del 来将连接返回到池中。
参考:#152 - [无标签]
对 Session 接口和作用域进行了全面改造。使用 hibernate 风格的方法,包括 query(class)、save()、save_or_update()等。默认情况下不安装 threadlocal 作用域。提供了一个绑定接口到特定 Engines 和/或 Connections 的界面,使得底层 Schema 对象不需要绑定到 Engine。添加了一个简单地聚合多个引擎之间事务的基本 SessionTransaction 对象。 - [无标签]
对映射器的依赖性和“级联”行为进行了全面改进;依赖逻辑从 properties.py 中分离出来到一个单独的模块“dependency.py”中。“级联”行为现在可以明确控制,正确实现“delete”,“delete-orphan”等。依赖系统现在可以在刷新时确定子对象是否有父对象,以便更好地决定如何更新该子对象在数据库中关于删除的情况。 - [无标签]
对 Schema 进行了全面改革,建立在 MetaData 对象的基础上而不是 Engine。整个 SQL/Schema 系统可以在没有任何 Engine 的情况下使用,仅由显式 Connection 对象执行。通过 BoundMetaData 存在“bound”方法论用于模式对象。ProxyEngine 通常不再需要,由 DynamicMetaData 替代。 - [无标签]
实现了真正的多态行为,修复
参考:#167 - [无标签]
“oid”系统已完全移入编译时行为;如果它们在不可用的情况下用于 order_by,order_by 不会被编译,修复
参考:#147 - [无标签]
包装方式进行了全面改革;“mapping”现在是“orm”,“objectstore”现在是“session”,旧的“objectstore”命名空间通过“threadlocal”模块加载(如果使用)。 - [无标签]
现在通过“import ”调用 mods。扩展优于 mods,因为 mods 是全局 monkeypatching - [无标签]
修复 add_property 以便将属性传播到继承映射器
参考:#154 - [无标签]
backrefs 自动生成在其原始属性的主映射器上,可以指定主/次要连接参数以覆盖。有助于它们与多态映射器的使用 - [无标签]
实现了“table exists”函数
参考:#31 - [无标签]
”create_all/drop_all”添加到 MetaData 对象
参考:#98 - [无标签]
对拓扑排序算法进行了改进和修复,以及更多单元测试 - [无标签]
文档中添加了教程页面,也可以使用自定义 doctest 运行器运行以确保其正常工作。文档通常已进行全面改进以处理新的代码模式 - [无标签]
许多其他修复,重构。 - [无标签]
迁移指南可在 Wiki 上找到:www.sqlalchemy.org/trac/wiki/02Migration
SqlAlchemy 2.0 中文文档(七十一)(4)https://developer.aliyun.com/article/1562396