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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: SqlAlchemy 2.0 中文文档(七十一)

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 进行了小修复,涉及一对一反向引用,其他重构
  • [无标签]
    映射类中重写的构造函数从原始类获取 namedoc
  • [无标签]
    修复了 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
域名解析 网络协议 安全
DNS&BIND9安装配置
DNS概念,BIND9的详细配置安装
|
安全 物联网 Linux
带你读《物联网渗透测试》之三:固件分析与漏洞利用
本书介绍物联网渗透测试的原理和实用技术。主要内容包括IOT威胁建模、固件分析及漏洞利用、嵌入式web应用漏洞、IOT移动应用漏洞、IOT设备攻击、无线电入侵、固件安全和移动安全最佳实践、硬件保护以及IOT高级漏洞的利用与安全自动化。
|
机器学习/深度学习 人工智能 算法
人工智能中的知识表示与推理
人工智能中的知识表示与推理
602 1
|
8月前
|
敏捷开发 存储 API
《小型开发者在鸿蒙Next上的成本与收益平衡之道》
鸿蒙Next系统的开发对小型开发者存在一定挑战。学习成本方面,需掌握新架构和API;开发成本受功能复杂度影响,经验不足会增加支出;设备成本因多设备测试需求较高;市场推广成本受限于资金资源。然而,鸿蒙系统也带来机遇:用户群体庞大、创新空间广阔、华为激励政策支持。通过利用开源资源、敏捷开发、聚焦垂直领域及合作,小型开发者可在鸿蒙生态中实现成功并获得收益。
290 4
|
小程序 开发者
微信小程序狼人杀游戏代码及步骤
微信小程序狼人杀游戏代码及步骤
633 0
|
消息中间件 存储 Java
深入探讨进程间通信的重要性:理解不同的通信机制(上)
本文旨在探讨进程间通信的重要性,并介绍了不同的通信机制,如管道、消息队列、共享内存、信号量、信号和套接字。通过理解这些通信机制的特点和应用场景,可以更好地实现进程间的高效数据共享。同时,本文还强调了同步和互斥机制的重要性,以确保数据的一致性和正确性。最后,还介绍了套接字作为一种跨网络和同一主机上进程间通信的通信机制,为读者提供了更全面的了解。通过阅读本文,读者将能够深入理解进程间通信的概念和不同机制,为实现有效的数据共享提供指导。
329 0
深入探讨进程间通信的重要性:理解不同的通信机制(上)
|
SQL 分布式计算 关系型数据库
Sqoop入门(一篇就够了)
Sqoop入门(一篇就够了)
7884 3
Sqoop入门(一篇就够了)
|
机器学习/深度学习 自然语言处理 算法
最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法
最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法
580 0
|
缓存 网络协议 Windows
一分钟解决Github连接慢或者无法连接,亲测有效!
一分钟解决Github连接慢或者无法连接,亲测有效!
5554 0
一分钟解决Github连接慢或者无法连接,亲测有效!