SqlAlchemy 2.0 中文文档(七十一)(1)https://developer.aliyun.com/article/1562393
0.2.2
发布日期:Mon Jun 05 2006
- [无标签]
对多态继承行为进行了重大改进,使其能够与邻接列表表结构一起使用
参考:#190 - [无标签]
对继承关系的主要修复和重构,更多单元测试 - [无标签]
修复了在 create_engine()上的“echo_pool”标志 - [无标签]
修复文档,删除了与 threadlocal 策略一起使用 close()不安全的错误信息(完全安全!) - [无标签]
create_engine()可以接受字符串或 unicode 格式的 URL
参考:#188 - [无标签]
firebird 支持部分完成;感谢 James Ralston 和 Brad Clements 的努力。 - [无标签]
Oracle 的 url 翻译出现问题,已修复,如果‘database’字段存在,则将主机/端口/sid 传递给 cx_oracle makedsn(),否则直接使用‘host’字段中的 TNS 名称 - [无标签]
修复了对于 query.get()/query.load()使用 unicode 条件的 bug - [无标签]
count()函数在 selectables 上现在使用表的主键或第一列而不是“1”作为条件,还使用标签“rowcount”而不是“count”。 - [无标签]
对映射到多个表的基本功能进行了清理,更正确地记录 - [无标签]
恢复了 global_connect()函数,将其附加到名为“default_metadata”的 DynamicMetaData 实例。如果在 Table 中留出 MetaData 参数,则将使用默认元数据。 - [无标签]
修复了会话级联行为、entity_name 传播的问题 - [无标签]
将 unittest 重新组织到子目录中 - [无标签]
对线程本地连接嵌套模式进行了更多修复
0.2.1
发布日期:2006 年 5 月 29 日 星期一
- [无标签]
create_engine() 的“pool”参数正确传播 - [无标签]
修复了 URL,如果未解析则引发异常,不会将空字段传递给 DB 连接字符串(例如 user:host@/db 这样的字符串在 postgres 上会出错) - [无标签]
在 Mapper 插入并尝试获取新的主键值时进行了一些小修复 - [无标签]
重写了 TLEngine 的一半,与 ‘strategy=”threadlocal”’ 一起使用的 ComposedSQLEngine。现在它正确地实现了 engine.begin()/ engine.commit(),与 connection.begin()/trans.commit() 完全嵌套。添加了大约六个 unittest。 - [无标签]
在 pool.Pool 中发现了一个重大的“duh”问题,忘记将 WeakValueDictionary 放回去。应该检查这一点的 unittest 也悄悄地遗漏了。修复了 unittest 以确保 ConnectionFairy 正确地退出作用域。 - [无标签]
添加了一个占位符 dispose() 方法到 SingletonThreadPool,目前还没有任何功能 - [无标签]
当引发异常时自动调用 rollback(),但仅当没有正在进行的事务时(即更像是自动提交)。 - [无标签]
修复了 sqlite 中如果没有 sqlite 模块存在时引发的异常 - [无标签]
为关联对象文档添加了额外的示例细节 - [无标签]
Connection 添加了检查是否已关闭的功能
0.2.0
发布日期:2006 年 5 月 27 日 星期六
- [无标签]
对 Engine 系统进行了全面改进,以前的 SQLEngine 现在是一个 ComposedSQLEngine,包括各种组件,包括 Dialect、ConnectionProvider 等。这影响了所有的 db 模块以及 Session 和 Mapper。 - [无标签]
create_engine 现在只接受 RFC-1738 格式的字符串:driver://user:password@host:port/database
update 这种格式通常但不完全符合 RFC-1738,包括“scheme”部分接受下划线而不是破折号或句点。 - [无标签]
对连接作用域方法进行了全面重写,Connection 对象现在可以直接执行子句元素,增加了显式的“close”以及在整个 Engine/ORM 中处理关闭的支持,不再依赖于内部的 del 来将连接返回到池中。
参考:#152 - [无标签]
对 Session 接口和作用域进行了全面改进。使用 hibernate 风格的方法,包括 query(class)、save()、save_or_update() 等。默认情况下不安装 threadlocal 作用域。提供了一个绑定接口到特定 Engines 和/或 Connections 的方法,使底层 Schema 对象不需要绑定到一个 Engine。添加了一个基本的 SessionTransaction 对象,可以简单地跨多个 Engines 聚合事务。 - [无标签]
对映射器的依赖性和“级联”行为进行了彻底改革;将依赖性逻辑从 properties.py 中拆分到一个单独的模块“dependency.py”中。 “级联”行为现在是明确可控的,“delete”,“delete-orphan”等的正确实现。依赖性系统现在可以在刷新时确定子对象是否有父对象,以便在删除方面做出更好的决策。 - [无标签]
对 Schema 进行彻底改革,以构建在 MetaData 对象之上,而不是 Engine。整个 SQL/Schema 系统可以不使用任何 Engines,仅通过显式的 Connection 对象执行。通过 BoundMetaData 存在“bound”方法用于模式对象。ProxyEngine 现在通常不再需要,并被 DynamicMetaData 取代。 - [无标签]
实现了真正的多态行为,修复
参考文献:#167 - [无标签]
“oid” 系统已完全移至编译时行为;如果在不可用的情况下在 order_by 中使用它们,order_by 不会被编译,修复
参考文献:#147 - [无标签]
包装程序进行了彻底改革;“mapping”现在是“orm”,“objectstore”现在是“session”,旧的“objectstore”命名空间通过“threadlocal”模块加载(如果使用)。 - [无标签]
现在通过“import ”调用 mods。扩展优先于 mods,因为 mods 全局性地进行了修改。 - [无标签]
修复 add_property 以将属性传播到继承映射器
参考文献:#154 - [无标签]
backrefs 自动针对其原始属性的主映射器创建自己,可以指定主/次要 join 参数来覆盖。有助于它们与多态映射器的使用 - [无标签]
实现了“表存在”功能
参考文献:#31 - [无标签]
”create_all/drop_all” 添加到 MetaData 对象
参考文献:#98 - [无标签]
对拓扑排序算法进行了改进和修复,以及更多单元测试 - [无标签]
在文档中添加了教程页面,还可以使用自定义的 doctest 运行器来运行,以确保其正常工作。文档通常进行了改革,以处理新的代码模式 - [无标签]
进行了许多其他修复和重构。 - [无标签]
迁移指南可在 Wiki 上找到www.sqlalchemy.org/trac/wiki/02Migration
0.2.8
发布日期:Tue Sep 05 2006
- [无标签]
连接方法和文档进行清理。在查询字符串中指定自定义 DBAPI 参数,在 ‘create_engine’ 中使用 ‘connect_args’ 参数,或通过 ‘create_engine’ 的 ‘creator’ 函数指定自定义创建函数。 - [无标签]
在 Pool 中新增了“recycle”参数,在 create_engine 中为“pool_recycle”,默认为 3600 秒;此时,超过这个年龄的连接将被关闭并替换为新连接,以处理自动关闭陈旧连接的数据库。
参考:#274 - [无标签]
改变了使用池化连接的“使无效”语义;将指示底层连接记录在下次调用时重新连接。“使无效”还将在底层调用 connection.cursor() 时抛出任何错误时自动调用。这将希望连接池能够重新连接到已停止并重新启动的数据库,而无需重新启动连接的应用程序。
参考:#121 - [无标签]
哎呀!教程中的 doctest 已经很长时间没有修复。 - [无标签]
在映射器上的 add_property() 方法会执行“编译所有映射器”步骤,以防给定的属性引用了未编译的映射器(就像教程中的情况!) - [无标签]
在创建之前检查 pg 序列是否已存在
参考:#277 - [无标签]
如果通过 MapperExtension.get_session(例如使用 sessioncontext 插件等)建立了上下文会话,则惰性加载操作将默认使用该会话,如果父对象尚未与会话持久化。 - [无标签]
惰性加载不会为没有数据库标识的对象触发(为什么?请参阅www.sqlalchemy.org/trac/wiki/WhyDontForeignKeysLoadData
) - [无标签]
unit-of-work 对“删除孤立”级联中的“孤儿”对象进行更好的检查,对于某些情况下父级不可用于级联的情况。 - [无标签]
映射器可以根据与属性包的交互来判断它们的对象是否为“孤儿”。当对象相互附加和分离时,此检查基于为每个关系维护的状态标志。 - [无标签]
现在使用“delete-orphan”声明自引用关系是无效的(因为上述检查将使它们无法保存) - [无标签]
当工作单元试图将它们作为关系的一部分 flush() 时,对于对象是否为会话的一部分进行了更好的检查。 - [无标签]
语句执行支持在表达式中多次使用相同的 BindParam 对象;简化了位置参数的处理。Bill Noon 在理解基本思想时做得很好。
参考:#280 - [无标签]
postgres 反射移至使用 pg_schema 表,可以通过传递 use_information_schema=True 参数给 create_engine 进行覆盖。
参考:#60, #71 - [无标签]
在 MetaData、Table、Column 中添加了 case_sensitive 参数,根据父模式项是否具有标志的非 None 设置或标识符名称是否全为小写来自动确定。当设置为 True 时,对具有混合或大写标识符的标识符应用引号。对已知为保留字或包含其他非标准字符的标识符也自动应用引号。各种数据库方言可以覆盖所有这些行为,但目前它们都使用默认行为。已在 postgres、mysql、sqlite、oracle 上进行测试。需要在 firebird、ms-sql 上进行更多测试。这是正在进行的工作的一部分
参考:#155 - [无标签]
更新了单元测试,可以在没有安装任何 pysqlite 的情况下运行;pool 测试使用模拟的 DBAPI - [无标签]
urls 支持密码中的转义字符
参考:#281 - [无标签]
向 UNION 查询添加了 limit/offset(尽管 oracle 尚未支持) - [无标签]
在 DateTime 和 Time 类型中添加了“timezone=True”标志。到目前为止,postgres 将其转换为“TIME[STAMP] (WITH|WITHOUT) TIME ZONE”,以便更可控地控制时区的存在(如果可用,psycopg2 会返回带有 tzinfo 的 datetimes,这可能会与不带 tzinfo 的 datetimes 造成混淆)。 - [无标签]
修复了在 distinct、**kwargs 与 SelectResults count()中使用 query.count()的问题
参考:#287 - [无标签]
当 autoload 失败时,从 MetaData 中注销 Table;
参考:#289 - [无标签]
导入 py2.5 的 sqlite3
参考:#293 - [无标签]
修复 startswith()/endswith()的 unicode 问题
参考:#296
0.2.7
发布日期:2006 年 8 月 12 日星期六
- [无标签]
设置引号设施,以便在所有查询/创建/删除中使用时可以为单个表、模式和列标识符启用特定于数据库的引号。通过在 Table 或 Column 中启用“quote=True”,以及在 Table 中启用“quote_schema=True”来启用。感谢 Aaron Spike 的出色努力。 - [无标签]
assignmapper 设置 is_primary=True,导致设置冗余映射器时未引发任何错误,已修复 - [无标签]
向 Mapper 添加了 allow_null_pks 选项,允许某些主键列为空的行(即在映射到外连接等情况下) - [无标签]
修改了 unitofwork,不再在“new”列表或 UOWTask “objects” 列表中维护排序;相反,新对象在与会话注册为新对象时被标记为排序标识符,然后 INSERT 语句在映射器 save_obj 中进行排序。INSERT 排序基本上一直推迟到刷新周期的最后。这样,UOWTask 中发生的各种排序和组织(特别是循环任务排序)就不必担心维护顺序(它们本来也不会) - [无标签]
修复了外键的反射,如果引用的表尚未加载,则自动加载 - [无标签]
- 将 URL 查询字符串参数传递给 connect() 函数
- 参考:#256
- [无标签]
- Oracle 布尔类型
- 参考:#257
- [无标签]
在关系中自定义主/次连接条件 将 默认传播到反向引用。指定 backref() 将覆盖此行为。 - [无标签]
在 sql.Join 中更好地检查模糊的连接条件;在 PropertyLoader 中传播到更好的错误消息(即 relation()/backref())以处理无法合理确定连接条件的情况。 - [无标签]
SQLite 在表反射时正确创建 ForeignKeyConstraint 对象。 - [无标签]
由于为所做的更改而进行的池调整。只有在连接实际成功时,溢出计数器才会递减。添加了一个测试脚本来尝试测试这一点。
参考:#224 - [无标签]
修复了 MySQL 反射默认值为 PassiveDefault 的问题 - [无标签]
在 MS-SQL 中添加了反射的 ‘tinyint’、‘mediumint’ 类型。
参考:#263,#264 - [无标签]
SingletonThreadPool 具有大小并进行清理,因此只有给定数量的线程本地连接保留下来(对于大量丢弃线程的 SQLite 应用程序是必需的) - [无标签]
修复了延迟加载器中的小 pickle bug(s)
参考:#265,#267 - [无标签]
修复了 MySQL 反射中可能出现的错误,某些版本在执行 SHOW CREATE TABLE 时返回数组而不是字符串 - [无标签]
修复了映射到连接时的延迟加载问题
参考:#1770 - [无标签]
所有 create()/drop() 调用都有一个名为“connectable”的关键字参数。“engine” 已被弃用。 - [无标签]
修复了 ms-sql connect() 与 adodbapi 的兼容��问题 - [无标签]
在 Select() 中添加了“nowait”标志 - [无标签]
继承检查使用 issubclass() 而不是直接的 mro 检查,以确保类 A 继承自 B,使映射继承更灵活地对应于类继承
参考:#271 - [无标签]
当对具有 ORDER BY 子句的 SelectResults 调用聚合函数(如 max、min 等)时,SelectResults 将使用子选择
参考:#252 - [无标签]
修复了类型问题,以便更轻松地使用特定于数据库的类型;修复了 mysql 文本类型以使其与此方法配合使用
参考:#269 - [无标签]
一些修复 sqlite 日期类型组织的问题 - [无标签]
添加了 MSTinyInteger 到 MS-SQL
参考:#263
SqlAlchemy 2.0 中文文档(七十一)(3)https://developer.aliyun.com/article/1562395