SqlAlchemy 2.0 中文文档(七十一)(1)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: SqlAlchemy 2.0 中文文档(七十一)


原文:docs.sqlalchemy.org/en/20/contents.html

0.2 更新日志

原文:docs.sqlalchemy.org/en/20/changelog/changelog_02.html

0.2.8

发布日期:2006 年 9 月 5 日星期二

  • [无标签]
    清理连接方法和文档。在查询字符串中指定自定义 DBAPI 参数,“create_engine”中的‘connect_args’参数,或通过‘creator’函数指定自定义创建函数到‘create_engine’。
  • [无标签]
    在 Pool 中添加了“recycle”参数,在 create_engine 中是“pool_recycle”,默认为 3600 秒;超过此时间的连接将被关闭并替换为新连接,以处理自动关闭陈旧连接的数据库
    参考:#274
  • [无标签]
    使用池化连接时更改了“invalidate”语义;将指示底层连接记录在下一次调用时重新连接。“invalidate”也将在底层调用   connection.cursor()时抛出任何错误时自动调用。这将希望连接池能够重新连接到已停止并重新启动的数据库,而无需重新启动连接应用程序
    参考:#121
  • [无标签]
    哎呀!教程的 doctest 很长一段时间都是错误的。
  • [无标签]
    在映射器上的 add_property()方法会执行“编译所有映射器”步骤,以防所给属性引用未编译的映射器(就像在教程中的情况一样!)
  • [无标签]
    在创建之前检查 pg 序列是否已经存在
    参考:#277
  • [无标签]
    如果通过 MapperExtension.get_session(例如使用 sessioncontext 插件等)建立了上下文会话,则懒加载操作将默认使用该会话,如果父对象尚未与会话关联。
  • [无标签]
    对于没有数据库标识的对象,惰性加载不会触发(为什么?请参见www.sqlalchemy.org/trac/wiki/WhyDontForeignKeysLoadData
  • [无标签]
    工作单元对于“delete-orphan”级联中的“孤立”对象进行了更好的检查,适用于某些情况下父对象无法进行级联的情况。
  • [无标签]
    映射器可以根据与属性包的交互来判断它们的对象是否是“孤立”的。此检查基于每个关系维护的状态标志,当对象相互附加和分离时进行维护。
  • [无标签]
    现在,使用“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 的情况下运行;池测试使用模拟的 DBAPI
  • [无标签]
    URL 支持密码中的转义字符
    参考:#281
  • [无标签]
    添加了对 UNION 查询的 limit/offset 支持(尽管 oracle 中还没有)
  • [无标签]
    添加了“timezone=True”标志到  DateTime 和 Time 类型。到目前为止,postgres 将其转换为“TIME[STAMP] (WITH|WITHOUT) TIME  ZONE”,以便更可控地控制时区的存在(如果可用,psycopg2 会返回带有 tzinfo 的 datetimes,这可能会与不带  tzinfo 的 datetimes 造成混淆)。
  • [无标签]
    修复了使用 query.count()与 distinct、SelectResults count()的 kwargs 的问题
    参考:#287
  • [无标签]
    当 autoload 失败时,从 MetaData 中注销 Table;
    参考:#289
  • [无标签]
    导入 py2.5 的 sqlite3
    参考:#293
  • [无标签]
    修复了 startswith()/endswith()的 unicode 问题
    参考:#296

0.2.7

发布日期:Sat Aug 12 2006

  • [无标签]
    引用设施设置,以便在所有查询/创建/删除中为单个表、模式和列标识符启用特定于数据库的引用。通过在  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
  • [无标签]
    在关系中自定义主/次连接条件 默认传播到 backrefs。指定 backref()将覆盖此行为。
  • [无标签]
    在 sql.Join 中更好地检查模糊的连接条件;在 PropertyLoader 中传播到更好的错误消息(即 relation()/backref())以处理无法合理确定连接条件的情况。
  • [无标签]
    sqlite 在表反射时正确创建 ForeignKeyConstraint 对象。
  • [无标签]
    由于为所做的更改而起源的池调整。如果连接实际成功,溢出计数器应该只在连接成功时递减。添加了一个测试脚本来尝试测试这一点。
    参考:#224
  • [无标签]
    修复了 mysql 反射默认值为 PassiveDefault
  • [无标签]
    在 MS-SQL 中添加了反射的‘tinyint’、‘mediumint’类型。
    参考:#263, #264
  • [无标签]
    SingletonThreadPool 有一个大小,并进行清理,以便只有给定数量的线程本地连接保持活动(对于大量释放线程的 sqlite 应用程序是必要的)
  • [无标签]
    修复了懒加载器中的小 pickle 错误
    参考:#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

0.2.6

发布日期:2006 年 7 月 20 日星期四

  • [无标签]
    对模式进行了重大改进,以允许真正的复合主键和外键约束,通过新的  ForeignKeyConstraint 和 PrimaryKeyConstraint  对象。现有的主键/外键创建方法没有改变,但在幕后使用这些新对象。表的创建和反射现在更加面向表而不是面向列。
    参考:#76
  • [无标签]
    对 MapperExtension 调用方案进行了全面改进,之前的工作效果不是很好
  • [无标签]
    对 ActiveMapper 进行了调整,支持自引用关系
  • [无标签]
    对 objectstore(在 activemapper/threadlocal 中)进行了轻微重新排列,以便 SessionContext 通过’.context’引用而不是直接子类化。
  • [无标签]
    如果在导入 activemapper 时激活了 mod,则 activemapper 将使用 threadlocal 的 objectstore
  • [无标签]
    对 URL 正则表达式进行了小修复,以允许文件名中包含’@’
  • [无标签]
    对 Session 的 expunge/update 等进行了修复…需要更多清理。
  • [无标签]
    select_table 映射器仍然不总是编译
  • [无标签]
    修复了 Boolean 数据类型
  • [无标签]
    将 count()/count_by()添加到 assignmapper 代理的方法列表中;这也将它们添加到 activemapper 中
  • [无标签]
    连接异常包装在 DBAPIError 中
  • [无标签]
    如果在映射内部类中提供了 autoload = True 属性,则 ActiveMapper 现在支持从数据库自动加载列定义。目前不支持反射任何关系。
  • [无标签]
    在某些情况下,延迟列加载可能会在 flush()中破坏连接状态,这个问题已经修复
  • [无标签]
    修复了 expunge()在级联时无法工作的问题
  • [无标签]
    修复了级联操作中潜在的无限循环
  • [无标签]
    添加了“synonym()”函数,应用于属性,使一个属性名与另一个属性名相同,以便覆盖属性并允许在 select_by()中访问原始属性名。
  • [无标签]
    修复了在子句构造中的类型问题,特别有助于多态联合的类型问题(CAST/ColumnClause 将其类型传播到代理列)
  • [无标签]
    映射器编译工作正在进行中,总有一天会成功……将 MapperProperty 对象的初始化移动到所有映射器创建后以更好地处理循环编译。现在所有属性都调用 do_init()方法,如果需要,它们更加了解自己的“继承”状态。
  • [无标签]
    禁止在自引用关系或与继承映射器(也是自引用关系)的关系上显式急切加载
  • [无标签]
    减少了查询._get 中绑定参数的大小,以满足挑剔的 Oracle
    参考:#244
  • [无标签]
    在 table.create()/table.drop()中添加了‘checkfirst’参数,以及 table.exists()
    参考:#234
  • [无标签]
    对继承进行了一些其他持续修复
    参考:#245
  • [无标签]
    属性/backref/orphan/history-tracking 调整如常…

0.2.5

发布日期:2006 年 7 月 8 日

  • [无标签]
    修复了在 select_by()中的无限循环错误,如果遍历命中两个相互引用的映射器
  • [无标签]
    将所有单元测试升级为将‘./lib/’插入 sys.path,解决了新的 setuptools PYTHONPATH 破坏行为
  • [无标签]
    进一步修复属性/依赖关系等……
  • [无标签]
    改进了当 DynamicMetaData 未连接时的错误处理
  • [无标签]
    MS-SQL 支持基本正常(已使用 pymssql 进行测试)
  • [无标签]
    组内 UPDATE 和 DELETE 语句的排序现在按主键值的顺序进行,以获得更具确定性的排序
  • [无标签]
    在插入/删除/更新映射器扩展现在按对象而不是按对象-表调用
  • [无标签]
    进一步修复/重构映射器编译

0.2.4

发布日期:2006 年 6 月 27 日

  • [无标签]
    当映射器在映射类上设置 init.name 时,支持 Python 2.3 时使用 try/except
  • [无标签]
    修复了线程本地引擎仍会自动提交尽管事务正在进行的错误
  • [无标签]
    惰性加载和延迟加载操作需要父对象在会话中才能执行操作;而以前操作只会返回空列表或 None,现在会引发异常。
  • [无标签]
    如果给定对象曾经附加到的会话被垃圾回收,Session.update()会稍微宽松一些;否则仍然需要显式从先前的会话中删除实例。
  • [无标签]
    修复了映射器编译时的错误检查
  • [无标签]
    修复了与排序/限制/偏移量结合使用时的急切加载问题
  • [无标签]
    非常引人注目:在‘CREATE TABLE’和‘(’之间添加了一个空格,因为这就是 MySQL 指示非保留字表名的方式……
    参考:#206
  • [无标签]
    对继承的更多修复,涉及到许多对多关系的正确保存
  • [无标签]
    修复了在指定显式模块给 mysql 方言时的 bug
  • [无标签]
    当 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() 引发异常时会失败得相当严重)
  • [无标签]
    ”foreignkey” 参数在 relation() 中也可以是一个列表。修复了自动外键检测
    参考:#151
  • [无标签]
    修复了一个 bug,导致具有模式名称的表在 MetaData 对象中未正确索引
  • [无标签]
    修复了重新定义“key”属性的 Column 在 ResultProxy 中未进行类型转换的 bug
    参考:#207
  • [无标签]
    修复了 URL 的‘port’属性,如果存在则为整数
  • [无标签]
    修复了旧 bug,即如果作为“secondary”映射的多对多表具有额外列,则删除操作将无法正常工作
  • [无标签]
    修复了针对 UNION 查询的映射的 bug
  • [无标签]
    修复了当没有 DB 驱动程序时抛出的不正确异常类
  • [无标签]
    当反射一个不存在的表时,添加了 NonExistentTable 异常抛出
    参考:#138
  • [无标签]
    对 ActiveMapper 进行了小修复,涉及一对一 backrefs,其他重构
  • [无标签]
    在映射类中重写的构造函数从原始类获取 namedoc
  • [无标签]
    ���复了 selectresult.py 中关于 mapper 扩展的小 bug
    参考:#200
  • [无标签]
    对 cascade_mappers 进行了小调整,目前不是非常强力支持的功能
  • [无标签]
    对 between()、column.between()进行了一些修正,以更好地传播类型信息
    参考:#202
  • [无标签]
    如果对象无法构建,则不会添加到会话中
    参考:#203
  • [无标签]
    CAST  函数已被制作为其自己的子句对象,具有自己的编译函数在 ansicompiler 中;允许 MySQL 默默地忽略大多数 CAST 调用,因为  MySQL 似乎只支持具有 Date 类型的标准 CAST 语法。为字符串、整数等提供与 MySQL 兼容的 CAST 支持,一个 TODO


SqlAlchemy 2.0 中文文档(七十一)(2)https://developer.aliyun.com/article/1562394

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(七十四)(5)
SqlAlchemy 2.0 中文文档(七十四)
24 6
|
1月前
|
SQL Oracle 关系型数据库
SqlAlchemy 2.0 中文文档(七十一)(4)
SqlAlchemy 2.0 中文文档(七十一)
24 1
|
1月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(七十四)(3)
SqlAlchemy 2.0 中文文档(七十四)
27 1
|
1月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(六十八)(3)
SqlAlchemy 2.0 中文文档(六十八)
14 0
|
1月前
|
SQL Python
SqlAlchemy 2.0 中文文档(七十四)(4)
SqlAlchemy 2.0 中文文档(七十四)
24 6
|
1月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(七十四)(2)
SqlAlchemy 2.0 中文文档(七十四)
16 1
|
1月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(七十四)(1)
SqlAlchemy 2.0 中文文档(七十四)
25 1
|
1月前
|
存储 SQL 测试技术
SqlAlchemy 2.0 中文文档(三十一)(1)
SqlAlchemy 2.0 中文文档(三十一)
17 1
|
1月前
|
关系型数据库 MySQL 测试技术
SqlAlchemy 2.0 中文文档(七十一)(3)
SqlAlchemy 2.0 中文文档(七十一)
11 0
|
1月前
|
Oracle 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(七十一)(2)
SqlAlchemy 2.0 中文文档(七十一)
18 0