SqlAlchemy 2.0 中文文档(六十八)(1)

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


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

0.5 变更日志

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

0.5.9

无发布日期

sql

  • [sql]
    在表达式包中修复了错误的 self_group()调用。
    参考:#1661

0.5.8

发布日期:2010 年 1 月 16 日

sql

  • [sql]
    Column 上的 copy() 方法现在支持未初始化、未命名的 Column 对象。这允许在多个子类上放置常见列的声明性助手的简单创建。
  • [sql]
    类似 Sequence() 的默认生成器在复制操作中正确转换。
  • [sql]
    Sequence() 和其他 DefaultGenerator 对象现在可以作为 Column 的“default”和“onupdate”关键字参数的值被接受,除了被接受为位置参数。
  • [sql]
    修复了一个影响包含独立列表达式的克隆可选择项的列算术错误。这个 bug 通常只在使用 0.6 版本中仅在 ORM 行为中出现时才会注意到,但在 SQL 表达式级别上更加正确。
    参考:#1568, #1617

postgresql

  • [postgresql]
    extract() 函数在 0.5.7  中略有改进,但需要更多工作来生成正确的类型转换(在 PG 的 EXTRACT 中,类型转换在很多情况下都是必要的)。现在使用基于 PG  文档的日期/时间/间隔算术的规则字典生成类型转换。它再次接受 text() 构造,这在 0.5.7 中被破坏。
    参考:#1647

misc

  • [firebird]
    将更多错误识别为断开连接。
    参考:#1646

0.5.7

发布日期:2009 年 12 月 26 日

orm

  • [orm]
    contains_eager()  现在与自动生成的子查询一起工作,当您说“query(Parent).join(Parent.somejoinedsubclass)”时会产生,即当  Parent 加入到一个联接表继承子类时。以前,contains_eager()  会错误地将子类表单独添加到查询中,产生笛卡尔积。票据描述中有一个示例。
    参考:#1543
  • [orm]
    query.options() 现在仅对于相关行为的选项才传播到已加载对象,以进一步潜在地加载更多子加载,保持各种不可序列化的选项(如由 contains_eager() 生成的选项)不会进入各个实例状态。
    参考:#1553
  • [orm]
    Session.execute() 现在根据传入的表达式(insert()/update()/delete() 构造)定位特定于表和映射器的绑定。
    参考:#1054
  • [orm]
    Session.merge()现在正确地将 many-to-one 或 uselist=False 属性覆盖为 None,如果给定要合并的对象中该属性也为 None。
  • [orm]
    修复了在合并包含空主键标识符的瞬态对象时会发生不必要的 select 的问题。
    参考:#1618
  • [orm]
    传递给 relation()、column_property()等的“extension”属性的可变集合不会被修改或在多个 instrumentation 调用之间共享,防止重复的扩展(例如 backref populators)被插入到列表中。
    参考:#1585
  • [orm]
    修复了对 CompositeProperty 上 get_committed_value()的调用。
    参考:#1504
  • [orm]
    修复了一个 bug,即当在列列表中出现非映射列实体时,如果调用了没有明确“左”侧的 join(),Query 会崩溃。
    参考:#1602
  • [orm]
    修复了当在联接表子类上配置复合列时,由于 0.5.6 版本中为修复而引入的问题,复合列加载不正确的 bug。感谢 Scott Torborg。
    参考:#1480, #1616
  • [orm]
    许多对一关系的“use  get”行为,即懒加载将回退到可能缓存的 query.get()值,现在在两个比较类型不完全相同类,但共享相同“亲和性” - 即  Integer 和 SmallInteger 的连接条件中起作用。还允许反射和非反射类型的组合与 0.5 风格类型反射一起工作,例如  PGText/Text(请注意 0.6 将类型反射为它们的通用版本)。
    参考:#1556
  • [orm]
    修复了在 query.update()中将 Cls.attribute 作为值字典中的键传递,并使用 synchronize_session=‘expire’(0.6 中为’fetch’)时的 bug。
    参考:#1436

sql

  • [sql]
    修复了两阶段事务中 commit()方法未设置完整状态的 bug,这允许随后的 close()调用成功。
    参考:#1603
  • [sql]
    修复了“numeric” paramstyle,显然这是 Informixdb 使用的默认 paramstyle。
  • [sql]
    在 select 的列子句中重复表达式根据每个子句元素的标识而不是实际字符串进行去重。这允许位置元素正确呈现,即使它们都呈现相同,例如“qmark”样式绑定参数。
    参考:#1574
  • [sql]
    与连接池连接相关联的光标(即 _CursorFairy)现在正确地将 iter()代理到底层光标。
    参考:#1632
  • [sql]
    类型现在支持“亲和性比较”操作,即 Integer/SmallInteger 是“兼容的”,或者 Text/String,PickleType/Binary 等。的一部分。
    参考:#1556
  • [sql]
    修复了阻止对别名()的别名()进行克隆或适应的错误(在 ORM 操作中经常发生)。
    参考:#1641

postgresql

  • [postgresql]
    添加了对反射 DOUBLE PRECISION 类型的支持,通过一个新的 postgres.PGDoublePrecision 对象。这在 0.6 中是 postgresql.DOUBLE_PRECISION。
    参考:#1085
  • [postgresql]
    添加了对反射 INTERVAL 类型的 INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND 语法的支持。
    参考:#460
  • [postgresql]
    修正了“has_sequence”查询以考虑当前模式,或显式序列指定的模式。
    参考:#1576
  • [postgresql]
    修复了 extract()的行为,以应用运算符优先规则到“::”运算符,当应用“timestamp”转换时确保正确的括号。
    参考:#1611

sqlite

  • [sqlite]
    sqlite 方言正确生成了一个在备用模式中的表的 CREATE INDEX。
    参考:#1439

mssql

  • [mssql]
    在构造 pyodbc 连接参数时,将 TrustedConnection 的名称更改为 Trusted_Connection
    参考:#1561

oracle

  • [oracle]
    “table_names”方言函数,被 MetaData .reflect()使用,省略了“索引溢出表”,这是 Oracle 在使用“溢出索引表”时生成的系统表。这些表无法通过 SQL 访问,也无法反射。
    参考:#1637

杂项

  • [ext]
    在构造类后(即通过类级属性赋值),可以向连接表声明的超类添加列,并且列将传播到子类。这与 0.5.6 中修复的情况相反。
    参考:#1523, #1570
  • [ext]
    修复了分片示例中的轻微不准确之处。在 ORM 中比较列的等价性最好使用 col1.shares_lineage(col2)来实现。
    参考:#1491
  • [ext]
    从 ShardedQuery 中删除未使用的 load()方法。
    参考:#1606

0.5.6

发布日期:2009 年 9 月 12 日 星期六

orm

  • [orm]
    修复了继承鉴别器作为复合主键的一部分在更新时失败的错误。的延续。
    参考:#1300
  • [orm]
    修复了一个 bug,该 bug 不允许双向多对多引用的一侧声明自己为“viewonly”。
    参考:#1507
  • [orm]
    添加了一个断言,防止@validates 函数或其他 AttributeExtension 加载未加载的集合,从而可能损坏内部状态。
    参考:#1526
  • [orm]
    修复了一个 bug,该 bug 阻止了两个实体在单个 flush()中相互替换主键值的某些操作顺序。
    参考:#1519
  • [orm]
    修复了一个隐晦的问题,即具有基类上自引用的急切加载的连接表子类将使用来自父类的“子类”表的数据填充相关对象的“子类”表。
    参考:#1485
  • [orm]
    relations()现在具有更大的“覆盖”能力,意味着明确指定覆盖父类关系的子类的关系()将在刷新期间被尊重。目前支持从具体继承设置中的多对多关系。除此用例外,效果可能有所不同。
    参考:#1477
  • [orm]
    从   relation()中挤出了更多不必要的“延迟加载”。当集合发生变化时,另一侧的多对一反向引用不会加载“旧”值,除非设置了“single_parent=True”。直接分配多对一仍会加载“旧”值,以便更新该值上的反向引用集合,该值可能已经存在于会话中,从而保持  0.5 行为契约。
    参考:#1483
  • [orm]
    修复了一个 bug,即基于 column_property()或类似属性的加载/刷新连接表继承属性将无法评估。
    参考:#1480
  • [orm]
    改进了对 MapperProperty 对象的支持,覆盖了非具体继承设置中继承映射器的属性扩展不会随机冲突。
    参考:#1488
  • [orm]
    标准  SQL 中不支持 UPDATE 和 DELETE 支持 ORDER BY、LIMIT、OFFSET 等。如果调用了  limit()、offset()、order_by()、group_by()或 distinct(),Query.update()和  Query.delete()现在会引发异常。
    参考:#1487
  • [orm]
    将 AttributeExtension 添加到 sqlalchemy.orm.all
  • [orm]
    当使用非 SQL /实体表达式调用 query()时,改进了错误消息。
    参考:#1476
  • [orm]
    现在在基类和子类中使用 False 或 0 作为多态鉴别器也能正常工作。
    参考:#1440
  • [orm]
    在查询中添加了enable_assertions(False),用于禁用对预期状态的通常断言 - 用于由查询子类工程化自定义状态。参见 www.sqlalchemy.org/trac/wiki/UsageRecipes/PreFilteredQuery 以获得示例。
    参考文献:#1424
  • [orm]
    修复了一个递归问题,该问题在映射对象的__len__()__nonzero__()方法导致状态更改时发生。
    参考文献:#1501
  • [orm]
    修复了Weak/StrongIdentityMap.add()中的错误异常。
    参考文献:#1506
  • [orm]
    修复了对于“无法找到 FROM 子句”在query.join()中的错误消息,如果查询针对纯 SQL 结构,则无法正确发出。
    参考文献:#1522
  • [orm]
    修复了一个有点假设性的问题,该问题会导致使用旧的polymorphic_union函数的映射器计算出错误的主键 - 但这是旧问题。
    参考文献:#1486

sql

  • [sql]
    修复了column.copy()以复制默认值和 onupdates。
    参考文献:#1373
  • [sql]
    修复了在 0.5.4 中引入的extract()中的一个错误,其中字符串“field”参数被视为 ClauseElement,导致更复杂的 SQL 转换中出现各种错误。
  • [sql]
    一元表达式(例如DISTINCT)将其类型处理传播到结果集,允许进行 unicode 等转换。
    参考文献:#1420
  • [sql]
    修复了在TableColumn中传递空字典作为“info”参数会引发异常的错误。
    参考文献:#1482

oracle

  • [oracle]
    向 Oracle 别名名称未被截断的 0.6 修复进行回溯。
    参考文献:#1309

misc

  • [ext]
    associationproxy生成的集合代理现在可以进行 pickle 化。 但是,用户定义的proxy_factory仍然不能进行 pickle 化,除非它定义了__getstate____setstate__
    参考文献:#1446
  • [ext]
    如果将__table_args__作为没有字典参数的元组传递,则Declarative将引发一条信息性异常。 改进了文档。
    参考文献:#1468
  • [ext]
    MetaData中声明的Table对象现在可以在发送到primaryjoin/secondaryjoin/secondary的字符串表达式中使用 - 名称从声明基础的MetaData中提取。
    参考文献:#1527
  • [ext]
    在构造类之后(即通过类级别属性赋值),可以向联接表子类添加列。该列始终会添加到底层的 Table 中,但现在映射器将重建其“join”以包括新列,而不是引发关于“没有这样的列,请使用 column_property()”的错误。
    参考资料:#1523
  • [test]
    将示例添加到测试套件中,以便定期进行测试,并清理掉一些不必要的弃用警告。

0.5.5

发布日期:2009 年 7 月 13 日星期一

通用

  • [general]
    单元测试已从 unittest 迁移到 nose。有关如何运行测试的信息,请参阅 README.unittests。
    参考资料:#970

orm

  • [orm]
    relation() 的 “foreign_keys”  参数现在会自动传播到相同方式的 backref 中,就像 primaryjoin 和 secondaryjoin  一样。对于极其罕见的情况,backref 的 relation() 有意配置了不同的  “foreign_keys”,现在双方都需要显式配置(如果它们实际上需要此设置,请参见下一个注释…)。
  • [orm]
    …唯一已知的(而且真的很少见)使用案例,其中在前向/后向方面使用了不同的 foreign_keys 设置,即部分指向自己列的复合外键,已得到增强,以便不再使用 fk->itself 方面来确定关系方向。
  • [orm]
    Session.mapper 现在已被 弃用
    如果您希望一个独立的对象成为会话的一部分,请调用 session.add()。否则,现在在 www.sqlalchemy.org/trac/wiki/UsageRecipes/SessionAwareMapper 文档中记录了 Session.mapper 的 DIY 版本。该方法在 0.6 版本中仍将被弃用。
  • [orm]
    修复了  Query 可以从联接表子类实体的单个列进行 join() 的 bug,即 query(SubClass.foo,  SubClass.bar).join()。在大多数情况下,会引发错误“找不到要从中联接的 FROM  子句”。在另外一些情况下,结果将以基类而不是子类的方式返回,因此依赖于这个错误结果的应用程序需要进行调整。
    参考资料:#1431
  • [orm]
    修复了一个涉及 contains_eager() 的 bug,在一个特定的罕见情况下,它会应用于次要(即惰性)加载,产生笛卡尔积。改进了对次要加载的 query.options() 的定位。
    参考资料:#1461
  • [orm]
    修复了 0.5.4 版本中引入的一个 bug,即当默认保持列被刷新时,组合类型失败。
  • [orm]
    修复了另一个 0.5.4 版本的 bug,即当整个对象被序列化时,可变属性(即 PickleType)不会被正确地反序列化。
    参考资料:#1426
  • [orm]
    修复了如果使用了任何同义词,session.is_modified() 将引发异常的错误。
  • [orm]
    修复了以前 pickled 对象重新放回会话时可能不会完全垃圾回收的潜在内存泄漏。
  • [orm]
    修复了基于列表的属性(如 pickletype 和 PGArray)未能正确合并的错误。
  • [orm]
    修复了不起作用的 attributes.set_committed_value 函数。
  • [orm]
    精简了 InstanceState 的 pickle 格式,这应该进一步减少 pickled 实例的内存占用。该格式应与 0.5.4 及之前的版本向后兼容。
  • [orm]
    sqlalchemy.orm.join 和 sqlalchemy.orm.outerjoin 现在已添加到 sqlalchemy.orm.* 的 all 中。
    参考:#1463
  • [orm]
    修复了当传递给 get() 的复合主键值过短时,Query 异常引发失败的错误。
    参考:#1458

sql

  • [sql]
    移除了 execute() 的一个晦涩特性(包括  connection、engine、Session),其中 bindparam() 构造可以作为 params  字典的键发送。这种用法未记录在案,并且是一个问题的核心,即由 text() 构造隐式创建的 bindparam() 对象可能具有与放置在  params  字典中的字符串相同的哈希值,并且在计算最终绑定参数时可能导致不适当的匹配。对于可能使用此功能的任何应用程序,此条件的内部检查将显著增加关键任务参数呈现的延迟,因此移除了此行为。这是一个向后不兼容的更改,但该功能从未被记录。

杂项

  • [engine/pool]
    为 StaticPool 实现了 recreate()。

0.5.4p2

发布日期:2009 年 5 月 26 日

sql

  • [sql]
    修复了基于参数或不是 executemany() 样式的 SQL 异常打印。

postgresql

  • [postgresql]
    废弃了硬编码的 TIMESTAMP  函数,当作为 func.TIMESTAMP(value) 使用时,会呈现“TIMESTAMP value”。这在某些平台上会中断,因为  PostgreSQL 不允许在此上下文中使用绑定��数。硬编码的大写也不合适,我们需要支持许多其他 PG 强制转换。因此,改用文本构造,即  select([“timestamp ‘12/05/09’”])。

0.5.4p1

发布日期:2009 年 5 月 18 日

orm

  • [orm]
    修复了在 0.5.4 版本中引入的一个属性错误,当使用 merge() 与不完整对象时会出现。

0.5.4

发布日期:2009 年 5 月 17 日

orm

  • [orm]在会话/flush() 与大型映射图、大量对象一起使用时,有关性能的显著增强:
  • 从 flush() 过程中移除了所有* O(N) 扫描行为,即扫描整个会话的操作,包括一个极其昂贵的操作,错误地假设主键值正在更改,而实际上并非如此。
  • 仍然存在一个特例,可能会调用完整扫描,如果现有的主键属性被修改为新值。
  • 会话的“弱引用”行为现在是完全的 - 对映射对象或相关项目/集合在其 dict 中不会有任何强引用。对象中的反向引用和其他循环不再影响会话丢失对未修改对象的所有引用的能力。具有待处理更改的对象仍然会被强制保留,直到 flush。
    该实现还通过将垃圾回收项的“复活”过程仅与映射“可变”属性(即 PickleType、复合属性)相关联来提高性能。这消除了 gc 过程的开销,并简化了内部行为。
    如果“可变”属性更改是对象上唯一的更改,然后该对象被取消引用,那么在发出 UPDATE 时,映射器将无法访问其他属性状态。这可能对某些 MapperExtensions 表现出不同的行为。
    此更改还影响了内部属性 API,但不影响 AttributeExtension 接口或任何公开文档化的属性函数。
  • 工作单元在 flush()期间不再为整个映射器图生成“依赖”处理器图,而是仅为表示具有待处理更改的对象的那些映射器创建这样的处理器。在大型互连映射器图的情况下,这节省了大量方法调用。
  • 缓存了以前在每次 flush 时多次发生的“表排序”操作,还从 flush()中删除了大量方法调用次数。
  • 映射器._save_obj()中的其他冗余行为已经简化。
  • 参考:#1398
  • [orm]
    修改了 DynamicAttributeImpl 上的 query_cls,以接受 AppenderQuery 的完整 mixin 版本,从而允许对 AppenderMixin 进行子类化。
  • [orm]
    “多态鉴别器”列可能是主键的一部分,并且将填充正确的鉴别器值。
    参考:#1300
  • [orm]
    修复了评估器无法评估 IS NULL 子句的问题。
  • [orm]
    修复了“动态”关系上的“设置集合”功能,以正确启动事件。以前,只能将集合分配给待处理的父实例,否则修改事件将无法正确触发。现在,设置集合与 merge()兼容,修复了这个问题。
    参考:#1352
  • [orm]
    允许对使用仪器描述符构建的  PropertyOption 对象进行 pickling;以前,在对使用描述符选项(例如  query.options(eagerload(MyClass.foo))加载的对象进行 pickling 时会出现 pickling 错误。
  • [orm]
    如果“延迟加载”SQL 子句与 get() 中使用的子句匹配,但包含一些硬编码的参数,则懒加载器将不使用 get()。以前,懒加载策略会在 get() 上失败。理想情况下,应该使用带有硬编码参数的 get(),但这需要进一步开发。
    参考:#1357
  • [orm]
    在加载期间,与  query.options() 关联的 MapperOptions  和其他状态不再捆绑在每个延迟/延迟加载属性的可调用对象中。这些选项现在仅与实例的状态对象关联一次,当它被填充时。这在大多数情况下消除了每个实例/属性加载器对象的需要,提高了单个实例的加载速度和内存开销。
    参考:#1391
  • [orm]
    修复了另一个位置,autoflush 干扰 session.merge() 的问题。现在,在 merge() 期间完全禁用 autoflush。
    参考:#1360
  • [orm]
    修复了一个 bug,该 bug 阻止了“可变主键”依赖逻辑在一对一关系上正常运行。
    参考:#1406
  • [orm]
    修复了 relation() 中的 bug,在 0.5.3 中引入,其中从基类到连接表子类的自引用关系将无法正确配置。
  • [orm]
    修复了当使用继承映射器时可能出现的模糊映射器编译问题,这会导致未初始化的属性。
  • [orm]
    修正了 session weak_identity_map 的文档 - 默认值为 True,表示正在使用弱引用映射。
  • [orm]
    修复了工作单位问题,即在被删除的对象所拥有的集合内的项目上的外键属性将不会在 relation() 自引用时设置为 None。
    参考:#1376
  • [orm]
    修复了 Query.update() 和 Query.delete() 在使用 eagerloaded 关系时的失败。
    参考:#1378
  • [orm]
    现在,在 foreign_keys 或 remote_side 集合中指定二进制 primaryjoin 条件的两个列是一个错误。而以前这只是荒谬的,但是以非确定性的方式会成功。

sql

  • [sql]
    从 SQLA 0.6  版本开始,将“编译器”扩展进行了反向移植。这是一个标准化接口,允许创建自定义的 ClauseElement  子类和编译器。特别是当您想要构建具有特定于数据库的编译的构造时,它是 text() 的一个方便的替代品。有关详细信息,请参阅扩展文档。
  • [sql]
    当绑定参数的列表大于 10 时,异常消息将被截断,防止大型 executemany() 语句填满屏幕和日志文件,导致巨大的多页异常。
    参考:#1413
  • [sql]
    sqlalchemy.extract()现在是方言敏感的,可以在支持的数据库中按照惯例提取时间戳的组件,包括 SQLite。
  • [sql]
    修复了从 clause_element()样式构造(即声明列)构造的 ForeignKey 上的 repr()和其他 _get_colspec()方法的问题。
    参考:#1353

schema

  • [schema] [1341] [ticket: 594]
    添加了一个 quote_schema()方法到 IdentifierPreparer 类,以便方言可以覆盖如何处理模式。这使得 MSSQL 方言可以将模式视为多部分标识符,例如’database.owner’。

extensions

  • [extensions]
    修复了向声明类添加延迟或其他列属性的问题。
    参考:#1379

mysql

  • [mysql]
    反射 FOREIGN KEY 构造将考虑到点分模式.表名组合,如果外键引用远程模式中的表。
    参考:#1405

sqlite

  • [sqlite]
    修正了 SLBoolean 类型,使其正确地将只有 1 视为 True。
    参考:#1402
  • [sqlite]
    修正了 float 类型,使其在反射时正确地映射到 SLFloat 类型。
    参考:#1273

mssql

  • [mssql]
    修改了保存点逻辑的工作方式,以防止它干扰非保存点导向的例程。保存点支持仍然非常实验性。
  • [mssql]
    添加了 MSSQL 的保留字,涵盖了 2008 年及以前的所有版本。
    参考:#1310
  • [mssql]
    修正了与基于二进制排序的数据库不兼容的信息模式的问题。清理了信息模式,因为现在只有 MSSQL 在使用。
    参考:#1343

0.5.3

发布日期:2009 年 3 月 24 日星期二

orm

  • [orm]
    session.flush()中的“objects”参数已被弃用。表示父对象和子对象之间链接的状态不支持一个链接的一侧处于“flushed”状态而另一侧不处于该状态,因此支持此操作会导致误导性的结果。
    参考:#1315
  • [orm]
    查询现在实现了 clause_element(),它生成了可选择的内容,这意味着查询实例可以在许多 SQL 表达式中被接受,包括 col.in_(query),union(query1, query2),select([foo]).select_from(query)等。
  • [orm]
    Query.join()现在可以构造多个 FROM 子句,如果需要的话。例如,query(A, B).join(A.x).join(B.y)可能会生成 SELECT A., B. FROM A JOIN X, B JOIN Y。贪婪加载也可以将其连接到这些多个 FROM 子句上。
    参考:#1337
  • [orm]
    修复了 dynamic_loader()中的错误,即在构建后未传播追加/删除事件到 UOW 以在 flush()中进行处理。
    参考:#1347
  • [orm]
    修复了在未映射已具有类级名称的属性之前未检查 column_prefix 的错误。
  • [orm]
    对特定集合属性执行 session.expire() 将清除任何待处理的反向引用添加,以便下一次访问正确返回数据库中存在的内容。对于 flush([objects]) 功能的一定程度的解决方案,尽管我们正在考虑完全删除该功能。
    参考:#1315
  • [orm]
    Session.scalar() 现在将原始 SQL 字符串转换为 text(),与 Session.execute() 相同,并接受相同的替代**kw args。
  • [orm]
    改进了 relation() 的“确定方向”逻辑,以便确定类似 mapper(A.join(B)) -> relation-> mapper(B) 的棘手情况的方向。
  • [orm]
    使用 session.flush([somelist]) 刷新部分对象集时,操作后仍保持待处理状态的对象不会被意外添加为持久对象。
    参考:#1306
  • [orm]
    添加了“post_configure_attribute”方法到 InstrumentationManager,以便“listen_for_events.py”示例再次正常工作。
    参考:#1314
  • [orm]
    现在检测到具有相同方向的前向和补充后向引用,即 ONETOMANY 或 MANYTOONE,将引发错误消息。以避免后续出现疯狂的 CircularDependencyErrors。
  • [orm]修复了 Query 中关于同时选择具有共同基类的多个连接表继承实体的错误:
  • 以前对“A JOIN B”上的“B”应用的适应会错误地部分应用于“A”。
  • 在关系比较(即 A.related==someb)时,当应该进行适应时未进行适应。
  • 其他过滤,如 query(A).join(A.bs).filter(B.foo==’bar’),错误地将“B.foo”适应为“A”。
  • [orm]
    修复了通过 any()、has() 等与左侧别名对象和右侧 of_type() 结合使用的 EXISTS 子句的适应。
    参考:#1325
  • [orm]
    在 sqlalchemy.orm.attributes 中添加了一个属性助手方法 set_committed_value。给定一个对象、属性名称和值,将在对象上设置值作为其“已提交”状态的一部分,��被理解为已从数据库加载的状态。有助于创建自定义集合加载器等功能。
  • [orm]
    当传递非映射器/类的受仪器化描述符时,查询不会因弱引用错误而失败,而是引发“无效列表达式”。
  • [orm]
    Query.group_by() 正确考虑应用于 FROM 子句的别名,例如使用 select_from()、使用 with_polymorphic() 或使用 from_self()。

sql

  • [sql]
    select()的 alias()在明确的标量上下文中使用时将转换为“标量子查询”,即在比较操作中使用时。当在 ORM 中使用 query.subquery()时也适用。
  • [sql]
    在使用 use_labels 时,在 select()中使用 Function 对象等时,修复了缺少的 _label 属性。
    参考:#1302
  • [sql]
    匿名别名现在会截断到方言允许的最大长度。在像 Oracle 这样具有非常小字符限制的数据库上更为重要。
    参考:#1309
  • [sql]
    selectable()接口已完全被 clause_element()替换。
  • [sql]
    TypeEngine 用于缓存特定于方言的类型的每个方言缓存现在是 WeakKeyDictionary。这是为了防止方言对象被引用,以便为创建任意数量的引擎或方言的应用程序永远引用。这会有一点性能损失,将在 0.6 中解决。
    参考:#1299

extensions

  • [extensions]
    修复了 serializer 中的递归 pickling 问题,由 EXISTS 或其他嵌入的 FROM 构造触发。
  • [extensions]
    Declarative 通过 bases 搜索定位“inherits”类,以跳过仅限于子类的 mixin。
  • [extensions]
    Declarative 即使明确给出“inherits”mapper 参数,也会找出联接表继承的主要联接条件。
  • [extensions]
    Declarative 将正确解释 backref()上的“foreign_keys”参数,如果它是一个字符串。
  • [extensions]
    当与 table 一起使用时,Declarative 将接受一个绑定到表的列作为属性,如果该列已经存在于 table 中。该列将被重新映射到给定的键,就像添加到 mapper()属性字典时一样。

postgresql

  • [postgresql]
    当遇到具有多个表达式的索引时,索引反射不会失败。
  • [postgresql]
    在 sqlalchemy.databases.postgres 中添加了 PGUuid 和 PGBit 类型。
    参考:#1327
  • [postgresql]
    在域中指定未知 PG 类型的反射不会在这些类型被指定时崩溃。
    参考:#1327

sqlite

  • [sqlite]
    修复了 SQLite 反射方法,以便在检测到不存在的 cursor.description 时(触发自动关闭游标),不会在最近版本的 pysqlite 上调用 fetchone()时失败,因为没有行存在时会引发错误。

mssql

  • [mssql]
    对 pymssql 1.0.1 的初步支持
  • [mssql]
    修正了在 mssql 上未遵守 max_identifier_length 的问题。

0.5.2

发布日期:2009 年 1 月 24 日星期六

orm

  • [orm]
    进一步完善了 0.5.1 对在多对多关系上放置  delete-orphan 级联的警告。首先,坏消息:警告将适用于多对多关系和多对一关系。这是必要的,因为在这两种情况下,SQLA  在确定“孤立”的状态时不会扫描全部潜在的父项集合 - 对于持久化对象,它仅检测到一个在 Python  中的取消关联事件来将对象确定为“孤立”。接下来,好消息:为了通过外键或关联表支持一对一关系,或者通过关联表支持一对多关系,可以设置一个新标志  single_parent=True,表示链接到关系的对象只应该有一个父对象。如果在 Python 中发生多个父关联事件,关系将引发错误。
  • [orm]
    调整了从 0.5.1 开始的属性检测更改,以便在超类已完全被检测后创建映射器的子类中完全建立属性检测。
    参考:#1292
  • [orm]
    修复了 delete-orphan 级联中的错误,其中来自两个不同父类到同一目标类的两个一对一关系会过早地删除实例。
  • [orm]
    修复了一个急加载错误,即自引用急加载会阻止其他急加载,无论是否是自引用,都无法正确连接到父 JOIN。感谢 Alex K 创建了一个很好的测试用例。
  • [orm]
    session.expire() 和相关方法将不会使未加载的延迟属性过期。这样可以防止在刷新实例时不必要地加载它们。
  • [orm]
    query.join()/outerjoin() 现在将正确地将 alias() 构造与现有的左侧连接起来,即使调用了 query.from_self() 或 query.select_from(someselectable)。
    参考:#1293

sql

  • [sql]
    进一步修复了“百分号和列/表中的空格。
    名称”功能。
    参考:#1284

mssql

  • [mssql]
    恢复了 convert_unicode 处理。结果被直接传递,而不进行转换。
    参考:#1291
  • [mssql]
    这次真的修复了 decimal 处理问题。
    参考:#1282
  • [mssql] [Ticket:1289]
    修改表反射代码,仅在构造表时使用 kwargs。

0.5.1

发布日期:Sat Jan 17 2009

orm

  • [orm]
    移除了一个内部连接缓存,当对临时 selectables 重复发出 query.join() 时可能会泄漏内存。
  • [orm]
    “clear()”、“save()”、“update()”、“save_or_update()” Session 方法已被弃用,替换为“expunge_all()”和“add()”。“expunge_all()”也已添加到 ScopedSession。
  • [orm]
    现代化了“没有映射表”异常,并为声明式添加了一个更明确的 table/tablename 异常。
  • [orm]
    现在具体继承映射器会对从超类继承的属性进行实例化,但对于具体映射器本身未定义的属性,会使用一个发出描述性错误的 InstrumentedAttribute。
    参考:#1237
  • [orm]
    添加了一个新的 relation()关键字 back_populates。这允许使用显式关系配置反向引用。在具体映射器层次结构和另一个类之间创建双向关系时,这是必需的。
    参考:#1237, #781
  • [orm]
    为在具体映射器上指定的 relation()对象添加了测试覆盖。
    参考:#1237
  • [orm]
    Query.from_self()以及 query.subquery()都会禁用生成的子查询内部的急切连接的渲染。“禁用所有急切连接”功能可以通过新的 query.enable_eagerloads()生成器公开使用。
    参考:#1276
  • [orm]
    在  Query 中添加了一系列基本的集合操作,接受 Query 对象作为参数,包括  union()、union_all()、intersect()、except_()、intersect_all()、except_all()。查看  Query.union()的 API 文档以获取示例。
  • [orm]
    修复了阻止 Query.join()和 eagerloads 附加到从联合或别名联合选择的查询的错误。
  • [orm]
    为在具体映射器上指定的双向关系添加了一个简短的文档示例。
    参考:#1237
  • [orm]
    现在映射器在构造时会使用最终的 InstrumentedAttribute 对象对类属性进行实例化,该对象保持持久。已删除 _CompiledOnAttr/getattribute()方法。其净效果是,基于列的映射类属性现在可以在类级别完全使用,而不需要调用映射器编译操作,大大简化了声明中的典型使用模式。
    参考:#1269
  • [orm]
    ColumnProperty(以及前端辅助程序如deferred)不再忽略未知的关键字参数。
  • [orm]
    修复了与 unitofwork 的“行切换”机制相关的错误,即将 INSERT/DELETE 转换为 UPDATE 时,与联接表继承和一个不包含子表定义值的对象相结合,将渲染出一个没有 SET 子句的 UPDATE。
  • [orm]
    在多对多关系上使用 delete-orphan 已被弃用。这会产生误导性或错误的结果,因为 SQLA 不会检索 m2m 的完整“父级”列表。要在 m2m 表上获得 delete-orphan 行为,请使用显式关联类,以便将单个关联行视为父级。
    参考:#1281
  • [orm]
    delete-orphan 级联总是需要 delete 级联。指定 delete-orphan 而不带 delete 现在会引发弃用警告。
    参考:#1281

sql

  • [sql]
    改进了处理列名中百分号的方法。增加了更多测试。MySQL 和 PostgreSQL 方言仍然无法正确发出带有百分号的标识符的 CREATE TABLE 语句。
    参考:#1256

模式

  • [模式]
    Index 现在接受基于列的 InstrumentedAttributes(即基于列的映射类属性)作为列参数。
    参考:#1214
  • [模式]
    在没有名称的列(如在声明中)请求其字符串输出时,不会引发 NoneType 错误(例如在堆栈跟踪中)。
  • [模式]
    修复了在反射表上覆盖具有 ForeignKey 的列时的 bug,其中派生列(即 select 的“虚拟”列等)会无意中调用仅用于原始列的模式级清理逻辑。
    参考:#1278

mysql

  • [mysql]
    添加了 MySQL 4.1 中缺失的关键字,以便正确转义。

mssql

  • [mssql]
    更正了对大十进制值的处理,增加了更健壮的测试。移除了对浮点数的字符串操作。
    参考:#1280
  • [mssql]
    修改了 mssql 中 do_begin 处理,使用 Cursor 而不是 Connection,以使其与 DBAPI 兼容。
  • [mssql]
    通过更改 savepoint_release 的处理方式,纠正了 adodbapi 上的 SAVEPOINT 支持,因为在 mssql 上不支持。

杂项

  • [声明]
    现在可以在没有自己表的子类上指定 Column 对象(即使用单表继承)。这些列将附加到基本表,但仅由子类映射。
  • [声明]
    对于连接和单一继承子类,子类只会映射那些已在超类上映射的列以及子类上显式指定的列。默认情况下,将排除表上存在但未映射的其他列,可以通过将空的 exclude_properties 集合传递给 mapper_args 来禁用此功能。这样,定义自己列的单一继承类将是唯一映射这些列的类。实际效果比通常使用显式 mapper() 调用设置 exclude_properties 参数更有组织。
  • [声明]
    向已使用 table 指定现有表的声明类添加新的 Column 对象是错误的。

0.5.0

发布日期:2009 年 1 月 6 日 星期二

通用

  • [通用]
    文档已转换为 Sphinx。特别是,生成的 API  文档已构建为完整的“API 参考”部分,其中组织了编辑文档和生成的文档字符串。各个部分和 API  文档之间的交叉链接得到了极大改善,提供了一个基于 JavaScript 的搜索功能,并提供了所有类、函数和成员的完整索引。
  • [general]
    setup.py 现在仅在可选情况下导入 setuptools。如果不存在,将使用 distutils。新的“pip”安装程序建议使用 easy_install,因为它以更简化的方式安装。
  • [general]
    在示例文件夹中添加了一个极其基本的 PostGIS 集成示例。

orm

  • [orm]
    Query.with_polymorphic()现在接受第三个参数“discriminator”,这将替换该查询的  mapper.polymorphic_on 的值。现在,即使 mapper 具有 polymorphic_identity,也不再需要设置  mapper 的 polymorphic_on。如果未设置,mapper  将默认以非多态方式加载。这两个特性共同允许非多态具体继承设置在每个查询基础上使用多态加载,因为在所有情况下使用多态具体设置会导致许多问题。
  • [orm]
    dynamic_loader 接受一个 query_class=来自定义用于动态集合和从中构建的查询的 Query 类。
  • [orm]
    query.order_by()接受 None,这将从查询中删除任何待处理的 order_by 状态,同时取消任何映射/关系配置的排序。这主要用于覆盖在 dynamic_loader()上指定的排序。
    参考:#1079
  • [orm]
    现在保留在  compile_mappers()期间引发的异常以提供“粘性行为”-如果对预编译映射属性的  hasattr()调用触发失败的编译并抑制异常,则会阻止后续编译,并且异常将在下一次 compile()调用时被重复。在使用  declarative 时经常出现此问题。
  • [orm]
    当在 prop.of_type(…).any()/has()的上下文中使用时,property.of_type()现在可以在单表继承目标上识别,以及 query.join(prop.of_type(…))。
  • [orm]
    当 join 的目标与基于属性的属性不匹配时,query.join()会引发错误-虽然不太可能有人这样做,但 SQLAlchemy 的作者却犯了这种特定的松散行为。
  • [orm]
    修复了在使用 weak_instance_map=False 时,修改事件不会被拦截进行 flush()的错误。
    参考:#1272
  • [orm]
    修复了一些可能影响针对包含同一表的多个版本的可选择性的查询的深层“列对应”问题,以及包含不同列位置的相同表列的联合和类似情况在不同级别。
    参考:#1268
  • [orm]
    与 column_property()、relation() 等一起使用的自定义比较器类可以在 Comparator 上定义新的比较方法,这些方法将通过 InstrumentedAttribute 上的 getattr() 变得可用。在 synonym() 或 comparable_property() 的情况下,首先在用户定义的描述符上解析属性,然后在用户定义的比较器上解析属性。
  • [orm]
    添加了 ScopedSession.is_active 访问器。
    参考:#976
  • [orm]
    可以将映射属性和列对象作为键传递给 query.update({})。
    参考:#1262
  • [orm]
    传递给表达式级别 insert() 或 update() 的 values() 的映射属性将使用映射列的键,而不是映射属性的键。
  • [orm]
    修正了 Query.delete() 和 Query.update() 与绑定参数不正常工作的问题。
    参考:#1242
  • [orm]
    Query.select_from()、from_statement() 确保给定的参数是 FromClause,或 Text/Select/Union。
  • [orm]
    Query() 可以将“复合”属性作为列表达式传递,并进行扩展。与某种程度相关。
    参考:#1253
  • [orm]
    当传递各种列表达式(如字符串、clauselists、text() 构造)给 Query() 时,Query() 更加健壮(这可能意味着它只是更好地提供错误提示)。
  • [orm]
    first() 在 Query.from_statement() 中按预期工作。
  • [orm]
    修复了在 0.5rc4 中引入的关于对使用 add_property() 或等效方法在编译后向 mapper 添加属性的属性不起作用的急切加载的 bug。
  • [orm]
    修复了 many-to-many relation() 中 viewonly=True 的 bug,该 bug 未正确引用 secondary->remote 之间的链接。
  • [orm]
    在向“次要”表中的“二对多”关系发出  INSERT 时,列表型集合中的重复项将被保留。假设 m2m  表上有唯一或主键约束,这将引发预期的约束违规,而不是悄悄地删除重复条目。请注意,对于一对多关系,旧行为仍然保留,因为在这种情况下,集合条目不会导致  INSERT 语句,并且 SQLA 不会手动监视集合。
    参考:#1232
  • [orm]
    Query.add_column() 可以像 session.query() 一样接受 FromClause 对象。
  • [orm]
    将多对一关系与 NULL 的比较正确转换为基于 not_() 的 IS NOT NULL。
  • [orm]
    添加了额外的检查以确保显式的 primaryjoin/secondaryjoin 是 ClauseElement 实例,以防止后续出现更令人困惑的错误。
    参考:#1087
  • [orm]
    改进了 mapper() 对非类类的检查。
    参考:#1236
  • [orm]
    comparator_factory 参数现在已记录并受到所有 MapperProperty 类型的支持,包括 column_property()、relation()、backref() 和 synonym()。
    参考:#5051
  • [orm]
    将 PropertyLoader 的名称更改为 RelationProperty,以与所有其他名称保持一致。PropertyLoader 仍然存在作为同义词。
  • [orm]
    修复了在 shard API 中导致总线错误的“双重 iter()”调用,删除了 0.4 版本中遗留的错误 result.close()。
    参考:#1099, #1228
  • [orm]
    使 Session.merge 级联不触发自动刷新。修复了合并实例过早插入且缺少值的问题。
  • [orm]
    为了帮助防止在多态联合继承场景中呈��出带外列而进行了两次修复(导致在 FROM 子句中呈现额外表,导致笛卡尔积):
  • 对于 a->b->c 继承情况的“列适配”进行了改进,以更好地定位通过多级间接关系相关的列,而不是呈现未适配的列。

  • “多态鉴别器”列仅针对实际查询的映射器呈现。该列不会从子类或超类映射器中“拉取”,因为不需要。
  • [orm]
    修复了 ShardedSession.execute() 上的 shard_id 参数。
    参考:#1072

sql

  • [sql]
    RowProxy 对象可以用于替代发送给 connection.execute() 和相关函数的字典参数。
    参考:#935
  • [sql]
    列名中可以再次包含百分号。
    参考:#1256
  • [sql]
    sqlalchemy.sql.expression.Function 现在是一个公共类。可以通过子类化以提供用户定义的 SQL 函数,采用命令式风格,包括预先建立的行为。postgis.py 示例展示了其中一种用法。
  • [sql]
    PickleType 现在默认偏爱 == 比较,如果传入对象(如字典)实现了 eq()。如果对象没有实现 eq() 并且 mutable=True,则会引发弃用警告。
  • [sql]
    修复了 sqlalchemy.sql 中导出 names 的奇怪问题。
    参考:#1215
  • [sql]
    多次使用相同的 ForeignKey 对象会引发错误,而不是在后期默默失败。
    参考:#1238
  • [sql]
    在 Insert/Update/Delete 构造中为 params() 方法添加了 NotImplementedError。这些项目目前不支持此功能,与 values() 相比也会有点误导。
  • [sql]
    反射的外键将正确定位其引用列,即使该列具有与反射名称不同的“key”属性。通过  ForeignKey/ForeignKeyConstraint 上的一个名为“link_to_name”的新标志来实现这一点,如果为  True,则表示给定名称是所引用列的名称,而不是其分配的键。
    参考:#650
  • [sql]
    select()可以接受 ClauseList 作为列,方式与 Table 或其他可选择的方式相同,内部表达式将用作列元素。
    参考:#1253
  • [sql]
    session.is_modified()上的“passive”标志正确传播到属性管理器。
  • [sql]
    union()和  union_all()不会破坏应用于 select()内部的 order_by()。如果您将带有 order_by()的 select()与  union()结合使用(可能是为了支持 LIMIT/OFFSET),还应在其上调用 self_group()以应用括号。

mysql

  • [mysql]
    在 text()构造中的“%”符号会自动转义为“%%”。由于这一更改的向后不兼容性,如果在字符串中检测到‘%%’,则会发出警告。
  • [mysql]
    修复了在反射期间 FK 列不存在时引发异常的错误。
    参考:#1241
  • [mysql]
    修复了涉及反射远程模式表的 bug,该表具有对该模式中另一个表的外键引用。

sqlite

  • [sqlite]
    表反射现在存储列的实际 DefaultClause 值。
    参考:#1266
  • [sqlite]
    bug 修复,行为变更

mssql

  • [mssql]
    添加了新的 MSGenericBinary 类型。这对应于 Binary 类型,因此它可以实现将长度指定类型视为固定宽度 Binary 类型和非长度类型视为无限长度 Binary 类型的专门行为。
  • [mssql]
    添加了新类型:MSVarBinary 和 MSImage。
    参考:#1249
  • [mssql]
    添加了 MSReal、MSNText、MSSmallDateTime、MSTime、MSDateTimeOffset 和 MSDateTime2 类型
  • [mssql]
    重构了日期/时间类型。smalldatetime数据类型不再截断为仅日期,现在将映射到 MSSmallDateTime 类型。
    参考:#1254
  • [mssql]
    修正了接受 int 的 Numerics 的问题。
  • [mssql]
    char_length映射到LEN()函数。
  • [mssql]
    如果INSERT包含子选择,则INSERT将从INSERT INTO VALUES构造转换为INSERT INTO SELECT构造。
  • [mssql]
    如果列是primary_key的一部分,则将是NOT NULL,因为 MSSQL 不允许在primary_key列中使用NULL
  • [mssql]
    MSBinary现在返回BINARY而不是IMAGE。这是一个向后不兼容的更改,因为BINARY是固定长度数据类型,而IMAGE是可变长度数据类型。
    参考:#1249
  • [mssql]
    get_default_schema_name 现在从数据库中反射,基于用户的默认模式。这仅适用于 MSSQL 2005 及更高版本。
    参考:#1258
  • [mssql]
    通过使用新的 collation 参数添加了排序规则支持。此功能支持以下类型:char、nchar、varchar、nvarchar、text、ntext。
    参考:#1248
  • [mssql]
    对连接字符串参数进行了更改,优先选择 DSN 作为 pyodbc 的默认规范。有关详细使用说明,请参阅 mssql.py 的文档字符串。
  • [mssql]
    增加了对保存点的实验性支持。目前与会话不完全兼容。
  • [mssql]
    支持三个级别的列可空性:NULL、NOT  NULL 和数据库配置的默认值。默认列配置(nullable=True)现在将在 DDL 中生成  NULL。之前没有发出任何规范,数据库默认值会生效(通常为 NULL,但不总是)。要显式请求数据库默认值,请使用 nullable=None  配置列,DDL 中将不发出任何规范。这是不兼容的行为。
    参考:#1243

oracle

  • [oracle]
    调整了 create_xid() 的格式以修复两阶段提交。我们现在收到了有关使用此更改正常运行 Oracle 两阶段提交的现场报告。
  • [oracle]
    添加了  OracleNVarchar 类型,生成 NVARCHAR2,并且还继承了 Unicode,因此默认情况下  convert_unicode=True。NVARCHAR2 自动反映到此类型中,因此这些列在没有显式 convert_unicode=True  标志的反射表上传递 Unicode。
    参考:#1233
  • [oracle]
    修复了某些类型的 out 参数无法接收的错误;感谢 huddlej 在 wwu.edu 的帮助!
    参考:#1265

杂项

  • [dialect]
    在方言上添加了一个新的 description_encoding 属性,用于在处理元数据时编码列名。这通常默认为 utf-8。
  • [engine/pool]
    Connection.invalidate() 检查关闭状态以避免属性错误。
    参考:#1246
  • [engine/pool]
    NullPool 支持失败时重新连接的行为。
    参考:#1094
  • [engine/pool]
    在使用 pool.manage(dbapi) 时,添加了一个互斥锁以防止启动时发生“dogpile”行为的小问题。这可以防止出现严重负载启动时可能发生的一种次要情况。
    参考:#799
  • [engine/pool]
    _execute_clauseelement() 现在再次成为私有方法。现在可用 ConnectionProxy,因此不再需要子类化 Connection。
  • [documentation]
    票务。
    参考:#1149, #1200
  • [documentation]
    添加了关于 create_session() 默认值的注释。
  • [documentation]
    添加了关于 metadata.reflect() 的部分。
  • [documentation]
    更新了 TypeDecorator 部分。
  • [documentation]
    由于最近对此功能的混淆,重写了文档中的“threadlocal”策略部分。
  • [documentation]
    从继承中删除了过时的‘polymorphic_fetch’和‘select_table’文档,重写了“joined table inheritance”的后半部分。
  • [documentation]
    记录了 comparator_factory kwarg,增加了新的文档部分“自定义比较器”。
  • [postgres]
    在 text() 结构中的“%”符号会自动转义为“%%”。由于此更改的向后不兼容性,如果在字符串中检测到‘%%’,则会发出警告。
    参考:#1267
  • [postgres]
    在与 server_side_cursors 结合使用时,调用 alias.execute() 不会引发 AttributeError。
  • [postgres]
    已添加索引反射支持到 PostgreSQL,使用了我们长期忽视的一个很棒的补丁,由 Ken Kuhlman 提交。
    参考:#714
  • [associationproxy]
    关联代理属性现在在类级别上可用,例如 MyClass.aproxy。以前这会评估为 None。
  • [declarative]
    由 backref() 作为字符串接受的参数列表包括 ‘primaryjoin’、‘secondaryjoin’、‘secondary’、‘foreign_keys’、‘remote_side’、‘order_by’。


SqlAlchemy 2.0 中文文档(六十八)(2)https://developer.aliyun.com/article/1560740

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