首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SqlAlchemy 2.0 中文文档(一)

处理数据 - 在这里我们学习如何在数据库中创建、选择、更新和删除数据。这里所谓的 CRUD 操作以 SQLAlchemy 核心的形式给出,并链接到其 ORM 对应项。...处理数据 - 这里我们学习如何在数据库中创建、选择、更新和删除数据。这里所谓的 CRUD 操作以 SQLAlchemy Core 的术语给出,并链接到其 ORM 对应项。...对于简单数据类型且没有其他选项的,我们可以单独指定Mapped类型注释,使用简单的 Python 类型int和str表示Integer和String。...在使用这种形式,我们会根据需要在每个mapped_column()构造内使用更明确的类型对象,Integer和String以及nullable=False。...然后,在处理数据库元数据中,我们学习了如何使用MetaData和相关对象在 SQLAlchemy 中表示数据库表、和约束。在本节中,我们将结合上述两个概念来创建、选择和操作关系数据库中的数据。

10910

SqlAlchemy 2.0 中文文档(四)

有关如何选择对象和单独的更多细节请参见选择 ORM 实体和使用 JOIN 进行 SELECT 在一次性查询多个表格是非常常见的,在 SQL 中,JOIN 关键字是这种情况的主要方式。...如何选择对象和单独的更多详细信息请参阅选择 ORM 实体和使用 JOIN 的 SELECT 在 SQL 中,一次查询多个表是非常常见的,而 JOIN 关键字是实现这一目的的主要方法。...在现代 SQLAlchemy 中,这些风格之间的差异基本上是表面的;当使用特定SQLAlchemy 配置风格来表达映射类的意图,映射类的内部映射过程大部分都是相同的,最终的结果始终是一个用户定义的类...在现代 SQLAlchemy 中,这些风格之间的区别主要是表面的;当使用特定SQLAlchemy 配置风格来表达映射类的意图,映射类的内部映射过程在大多数情况下是相同的,最终的结果总是一个用户定义的类...mapped_column()指令也可以选择性地与类型注解结合使用使用Mapped类可以直接提供有关映射的一些细节。

9410
您找到你想要的搜索结果了吗?
是的
没有找到

SqlAlchemy 2.0 中文文档(二十)

adapt_on_names – 如果为 True,则在将 ORM 实体的映射与给定可选择的映射使用更宽松的 “匹配” - 如果给定的可选择没有与实体上的对应的,则将执行基于名称的匹配。...adapt_on_names – 如果为 True,则在将 ORM 实体的映射映射到给定可选择使用更自由的“匹配” - 如果给定的可选择否则没有与实体上的对应的,则将执行基于名称的匹配。...adapt_on_names - 如果为 True,则在将 ORM 实体的映射映射到给定可选择,将使用更自由的“匹配” - 如果给定可选择的没有与实体上的对应的,则将执行基于名称的匹配。...,普通的 Table 或 Column 对象,条目将在所有情况下包含有关返回的各个的基本信息: >>> stmt = select(user_table, address_table.c.id)...adapt_on_names – 如果为 True,则在将 ORM 实体的映射与给定可选择进行映射使用更宽松的“匹配” - 如果给定的可选择没有与实体上的对应的,则将执行基于名称的匹配。

6710

SqlAlchemy 2.0 中文文档(五)

- 适用于声明式表 ### 对命令式表列应用加载、持久化和映射选项 在为声明式映射设置加载和持久化选项一节中,讲述了如何在使用声明式表配置设置加载和持久化选项使用 mapped_column()...另请参阅 自动映射 自动从反射表中命名列方案 当使用任何以前的反射技术,我们有选择通过映射的命名方案。...另请参见 Automap 从反射表自动化命名方案 当使用任何前述的反射技术,我们可以选择更改映射的命名方案。...另请参阅 自动映射 从反射表自动命名列方案 在使用任何先前的反射技术,我们可以选择更改映射的命名方案。...另请参阅 自动映射 从反射表自动命名列方案 在使用任何先前的反射技术,我们可以选择更改映射的命名方案。

9210

SqlAlchemy 2.0 中文文档(三十三)

关联表包含一个“鉴别器”,确定每个特定行与哪种类型的父对象关联。 generic_fk.py - 展示了所谓的“通用外键”,类似于流行框架( Django、ROR 等)的方式。...这种方法绕过了标准的引用完整性实践,因为“外键”实际上不被约束以引用任何特定的表;相反,在应用程序逻辑中使用逻辑来确定引用的是哪个表。...关联表包含一个“鉴别器”,用于确定每个关联表中的行与哪种类型的父对象相关联。 generic_fk.py - 展示了所谓的“通用外键”,类似于流行框架( Django、ROR 等)的做法。...关联表包含一个“区分符”,用于确定哪种类型的父对象与关联表中的每个特定行关联。 generic_fk.py - 演示了所谓的“通用外键”,类似于流行框架( Django,ROR 等)的方式。...active_column_defaults.py - 演示使用AttributeEvents.init_scalar()事件,结合核心默认值,为 ORM 对象提供在访问未设置属性自动生成默认值的功能

11910

SqlAlchemy 2.0 中文文档(六)

有关这些特定概念的更多文档可以在基本关系模式、使用 column_property 和限制哪些使用延迟加载中找到。...有关这些特定概念的更多文档可在基本关系模式、使用 column_property 和使用推迟限制加载的中找到。...## 使用混合和基类进行映射继承模式 在处理映射类继承层次结构中记录的映射器继承模式,当使用 declared_attr ,可以使用一些附加功能,无论是与混合类一起使用,还是在类层次结构中增加映射和未映射的超类...declared_attr()生成特定表继承 与在使用declared_attr处理__tablename__和其他特殊名称的方式相反,当我们混合和属性(例如关系、属性等),该函数仅在层次结构中的基类上调用...declared_attr()生成特定于表的继承 与在使用declared_attr处理__tablename__和其他特殊名称的方式相反,当我们混合和属性(例如关系、属性等),该函数仅在层次结构中的基类中调用

13010

SqlAlchemy 2.0 中文文档(三十九)

或者在 PostgreSQL 上,可能返回 PostgreSQL 特定的数据类型, sqlalchemy.dialects.postgresql.INTERVAL 或 sqlalchemy.dialects.postgresql.ENUM...为了适应这种使用情况,有一种技术,可以将这些供应商特定的数据类型即时转换为 SQLAlchemy 后端不可知数据类型的实例,例如上面的类型, Integer、Interval 和 Enum。...覆盖反射 在反射表,可以使用显式值覆盖单个;这对于指定自定义数据类型、在数据库中未配置的主键等约束非常方便: >>> mytable = Table( ......这意味着,如果从 MySQL 数据库中反射出一个“整数”数据类型,该类型将由sqlalchemy.dialects.mysql.INTEGER类表示,其中包括 MySQL 特定的属性,“display_width...或者在 PostgreSQL 上,可能会返回 PostgreSQL 特定的数据类型,sqlalchemy.dialects.postgresql.INTERVAL或sqlalchemy.dialects.postgresql.ENUM

9210

SqlAlchemy 2.0 中文文档(二)

使用文本列表达式进行选择 当我们使用select()函数构造一个Select对象,通常会向其中传递一系列使用 table metadata 定义的Table和Column对象,或者在使用 ORM ,...,当我们从完整实体User中选择,与user_table相反,有一个重要的区别,即实体本身作为每行中的单个元素返回。...### 选择 ORM 实体和 ORM 实体,如我们的User类以及其上的映射属性,User.name,也参与 SQL 表达式语言系统,表示表和。..., user_account.fullname FROM user_account 当使用 ORM Session.execute()方法执行类似上述的语句,当我们从完整实体(User)中选择...- 在 ORM 查询指南 中的 ORM 实体从联合中选择 前面的示例说明了如何在给定两个Table对象的情况下构造一个 UNION,然后返回数据库行。

14010

SqlAlchemy 2.0 中文文档(三十六)

使用的方言选择用于填充这些数据的策略;如果是使用服务器端默认值和/或 SQL 表达式生成的,则通常使用特定于方言的方法(cursor.lastrowid或RETURNING)来获取新的主键值。...子句中的(如果未明确指定)。...dialect_name – 默认为*,如果指定为特定方言的名称,将仅在使用该方言应用这些提示。...正在使用的方言选择用于填充这些数据的策略;如果它是使用服务器端默认值和/或 SQL 表达式生成的,则通常会使用方言特定的方法,cursor.lastrowid或RETURNING 来获取新的主键值。...dialect_name – 默认为*,如果指定为特定方言的名称,则仅在使用该方言应用这些提示。

12510

SqlAlchemy 2.0 中文文档(八)

下面我们使用select()构造创建一个ScalarSelect,表示一个面向的 SELECT 语句,将特定User的可用Address对象的计数链接在一起: from sqlalchemy.orm...,registry.mapped()装饰器,可以在底层Mapper对象上显式调用Mapper.add_property()方法,该对象可以使用inspect()获取: from sqlalchemy.orm...下面我们使用select()构造创建一个ScalarSelect,表示一个面向的 SELECT 语句,它链接了特定User的可用Address对象的计数: from sqlalchemy.orm import...将属性名称传递给复合对象 我们可以使用更多带有注释形式编写上面相同的示例,其中我们可以选择将属性名称传递给 composite() 而不是完整的构造: from sqlalchemy.orm import...将属性名称传递给复合对象 我们可以使用更多带有注释形式编写上面相同的示例,其中我们可以选择将属性名称传递给 composite() 而不是完整的构造: from sqlalchemy.orm import

10710

SqlAlchemy 2.0 中文文档(十八)

这里的一般原理是性能,在表中具有很少使用,并且具有潜在的大数据值,因为在每次查询完全加载这些可能会耗费时间和/或内存。当实体加载SQLAlchemy ORM 提供了各种控制加载的方式。...将延迟分组加载 通常,当使用 mapped_column(deferred=True) 进行映射,当在对象上访问延迟属性,将发出 SQL 仅加载该特定而不加载其他,即使映射还有其他标记为延迟的...] (2,) >>> book.summary 'another long summary' ```## 将任意 SQL 表达式加载到对象上 选择 ORM 实体和属性及其他地方所讨论的,可以使用...通常,当一个使用mapped_column(deferred=True)进行映射,当在对象上访问延迟属性,SQL 将被发出以仅加载该特定,而不加载其他,即使映射还有其他被标记为延迟的也是如此...with_expression() 作为对象加载选项,只对查询的最外层部分生效,并且仅适用于对完整实体进行的查询,而不适用于子查询中的任意选择或复合语句( UNION)的元素。

12510

SqlAlchemy 2.0 中文文档(十)

“非主要”映射器的概念已经存在多个 SQLAlchemy 版本,但从 1.3 版本开始,此功能已被弃用。其中一个非主要映射器有用的情况是构建与备用可选择类之间的关系。...“非主要”映射器的概念在许多版本的 SQLAlchemy 中一直存在,但自版本 1.3 起,此功能已不建议使用。唯一需要非主要映射器的情况是在构造与另一个可选择的类的关系。...另见 声明性继承 使用 _orm.declared_attr() 生成特定表继承 attribute directive 将 declared_attr 标记为装饰声明性指令, __tablename...映射器配置通常是自动调用的,第一次使用特定 registry 的映射,以及每当使用映射并且已经构造了额外的尚未配置的映射器。...“‘selectin’” - 指定当加载此类的实例,将发出额外的 SELECT 来检索特定于此子类的。SELECT 使用 IN 一次性检索多个子类。 版本 1.2 中的新功能。

10310

SqlAlchemy 2.0 中文文档(九)

对类层次结构中特定子类的查询将作为 SQL JOIN 在其继承路径上的所有表之间进行。如果查询的类是基类,则查询基表,同时可以选择包含其他表或允许后续加载特定于子表的属性的选项。...无论继承映射是否为子类使用不同的连接表(连接表继承)或所有一个表(单表继承),这个值都应该被持久化并在查询对 ORM 可用。...)在存在继承的超类查找并使用已经映射的,如果已经存在,则映射一个新: from sqlalchemy import DateTime class Employee(Base): __tablename...在层次结构中查询特定子类将作为 SQL JOIN 渲染其继承路径上的所有表。如果查询的类是基类,则将查询基表,同时可以选择包括其他表或允许特定于子表的属性稍后加载。...无论继承映射使用不同的联接表作为子类(联合表继承)还是所有一个表作为单表继承,这个值都应该被持久化并在查询对 ORM 可用。

10710

SqlAlchemy 2.0 中文文档(十五)

ON UPDATE CASCADE,没有外键支持 在使用不支持引用完整性的数据库,并且使用具有可变值的自然主键SQLAlchemy 提供了一个功能,允许将主键值传播到已引用的外键到有限程度,通过针对立即引用主键的外键发出...参数,提供在生成新的relationship()使用特定参数。...当特定的映射安排将导致两行彼此依赖,请使用此标志,例如,一个表与一组子行之间存在一对多关系,并且还有一个引用该列表中的单个子行(即两个表相互包含对方的外键)。...参数,提供要在生成新的relationship()使用特定参数。...遗留查询方法 加载选项 限制延迟加载的 使用load_only()减少加载的 使用defer()省略特定 使用 raiseload 防止延迟加载 配置映射上的延迟

8610

SqlAlchemy 2.0 中文文档(三)

- 我们在这里设置了User和Address实体的 ORM 映射 选择 ORM 实体和 - 一些关于如何为诸如User之类的实体运行 SELECT 语句的示例 使用 ORM 工作单元模式插入行...这使它能够根据给定的一组待处理更改,更好地决定如何在事务中发出 SQL DML。当它确实向数据库发出 SQL 以推送当前更改集,该过程被称为刷新。...当需要影响大量行而无需构建和操作映射对象,这种用法尤为重要,因为对于简单、性能密集型的任务,大批量插入,这可能是繁琐和不必要的。...当需要影响大量行而无需构造和操作映射对象,此使用模式尤为重要,因为对于简单、性能密集的任务(大型批量插入),构造和操作映射对象可能会很麻烦和不必要。...为了描述如何在表之间进行连接,这些方法根据表元数据结构中链接两个表的单一明确ForeignKeyConstraint对象的存在推断 ON 子句,或者我们可以提供一个明确的 SQL 表达式构造来指示特定

11010

SqlAlchemy 2.0 中文文档(十九)

大多数示例假定“用户/地址”映射设置类似于在选择设置中所示的设置。 SQLAlchemy 的一个重要部分是在查询提供对相关对象加载方式的广泛控制。...这种“根据属性访问加载”的默认行为称为“延迟”或“选择”加载 - 名称“选择”是因为在首次访问属性通常会发出“SELECT”语句。...使用 subqueryload() 与诸如 Select.limit() 或 Select.offset() 这样的限定修饰符的查询应该始终包含针对唯一主键)的 Select.order_by()...当使用查询选项joinedload()、defer()或类似选项,Load对象在大多数情况下会在幕后隐式使用。除了一些非常特殊的情况外,通常不会直接实例化它。...使用subqueryload()的查询,结合使用诸如Select.limit()或Select.offset()之类的限定修饰符,应始终包括针对唯一主键)的Select.order_by(),以便由

11010

SqlAlchemy 2.0 中文文档(三十七)

任何 SQL 表达式都可以从这个基类派生,并且对于长一些的构造,比如专门的 INSERT 语句,这可能是最好的选择。 ColumnElement - 所有“类似”的元素的根。...当在特定子类的类级别设置HasCacheKey.inherit_cache属性为True,将指示该类的实例可以安全地进行缓存,使用直接父类的缓存键生成方案。...当重写内置 SQL 构造的编译,@compiles 装饰器会在适当的类上调用(确保使用类,即 Insert 或 Select,而不是创建函数, insert() 或 select())。...任何 SQL 表达式都可以从这个基类派生,对于像专门的 INSERT 语句这样的较长构造来说,这可能是最好的选择。 ColumnElement - 所有“样”元素的根。...当HasCacheKey.inherit_cache属性在特定子类的类级别上设置为True,将表示此类的实例可以安全地缓存,使用其直接超类的缓存键生成方案。

14310

SqlAlchemy 2.0 中文文档(三十一)

可以使用 pip 使用“mypy”额外钩子安装 Mypy: pip install sqlalchemy[mypy] 插件本身 Configuring mypy to use Plugins 中描述的那样配置...,在 _mypy_mapped_attrs 中的属性将应用 Mapped 类型信息,以便在类绑定上下文中使用 User 类,它将表现为一个 SQLAlchemy 映射类。...可以使用 pip 使用 “mypy” extras 钩子安装 Mypy: pip install sqlalchemy[mypy] 插件本身配置 配置 mypy 使用插件 中所述,使用 sqlalchemy.ext.mypy.plugin...,在_mypy_mapped_attrs中列出的属性将应用于Mapped类型信息,以便在类绑定上下文中使用User类,它将表现为一个 SQLAlchemy 映射类。...这再次与 SQLAlchemy ORM 实际创建构造函数的行为相匹配,不应与验证系统( Python dataclasses)的行为混淆,后者将根据注释生成与可选与必需属性相匹配的构造函数。

13520

SqlAlchemy 2.0 中文文档(三十)

例如,如果自动映射尝试将一个多对一关系命名为一个现有相同的名称,可以有条件地选择替代约定。...reflection_options – 当存在,此选项字典将传递给 MetaData.reflect(),以提供一般的反射特定选项, only 和/或特定于方言的选项, oracle_resolve_synonyms...例如,如果 automap 正试图将多对一关系命名为现有相同的名称,可以条件地选择替代约定。...例如,如果 automap 尝试将一个多对一关系命名为现有的名称,可以有条件地选择替代约定。...reflection_options – 当存在,此选项字典将传递给 MetaData.reflect() 以提供通用的反射特定选项, only 和/或特定于方言的选项, oracle_resolve_synonyms

11310

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券