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

SqlAlchemy 2.0 中文文档(五)

__name 字段,指示数据库名称,因为声明性过程将使用给定构造函数的属性名称,并将其分配为名称(在上面的示例中,这指的是 id、name、fullname、nickname 的名称)。...__name,在这种情况下,生成的 Column 将在 SQL 和 DDL 语句中使用给定的名称,而 User 映射类将继续允许使用给定的属性名称访问属性,而不管本身的名称如何(更多内容请参阅 明确命名声明式映射...如果使用了这些类型注释,则必须存在于称为Mapped的特殊 SQLAlchemy 类型中,该类型然后表示其中的特定 Python 类型。...__name字段,该字段指示数据库名称,因为声明性过程将使用赋予构造的属性名称,并将其分配为名称(在上面的示例中,这指的是名称id、name、fullname、nickname)。...NULL, but can be None in Python data: Mapped[Optional[str]] = mapped_column(nullable=False) 同样,一个属性写入到一个数据库

14910

SqlAlchemy 2.0 中文文档(十一)

命令式形式 一对多 使用集合、列表或其他集合类型进行一对多 为一对多配置删除行为 多对一 可多对一 一对一 为注释配置设置 uselist=False 多对多...;因此,相关类必须直接在 relationship() 构造中指定,可以作为类本身、类的字符串名称或返回目标类引用的可调用函数。...;因此,相关类必须直接在relationship()构造中指定,可以是类本身、类的字符串名称或返回目标类引用的可调用函数。...;因此,相关类必须直接在relationship()构造中指定,可以是类本身、类的字符串名称,或者返回目标类引用的可调用函数。...;因此,相关类必须直接在relationship()构造中指定,可以是类本身、类的字符串名称,或者返回目标类引用的可调用函数。

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

SqlAlchemy 2.0 中文文档(三十六)

但是,与直接使用UpdateBase.returning()时不同,的顺序是未定义的,因此只能使用名称或Row._mapping键来定位它们;它们不能可靠地以位置为目标。...当针对 DELETE 语句使用时,默认情况下不包含任何在 RETURNING 中,而必须显式指定,因为在 DELETE 语句进行时通常不会更改值的。...通常由 GenericFunction 调用,但也可单独使用,以便将 Function 构造与func访问器关联起来(即 CAST,EXTRACT)。...class sqlalchemy.sql.functions.aggregate_strings 实现一个通用的字符串聚合函数。 此函数将值连接成字符串,并用分隔符分隔值。...class sqlalchemy.sql.functions.aggregate_strings 实现一个通用的字符串聚合函数。 此函数将值连接为一个字符串,并用分隔符分隔值。

19710

SqlAlchemy 2.0 中文文档(三十八)

,因为这样的必须引用源自其他地方的值。...这表明对 SQLAlchemy 而言,新生成的值将在更新后可用。这种构造实际上并不在数据库内部实现任何生成函数,而是必须单独指定。...可以在构造时省略名称字段,并在任何时候在与Table关联之前应用。这是为了支持在declarative扩展中方便的使用。 type_ – 的类型,使用一个子类化了TypeEngine的实例指示。...这告诉 SQLAlchemy 在更新后将可用新生成的值。此构造实际上不在数据库中实现任何生成函数,而必须单独指定。...要向现有的关系数据库表添加约束,必须使用 SQL ALTER 命令。SQLAlchemy 还提供了当调用时可以生成此 SQL 的AddConstraint构造

13910

SqlAlchemy 2.0 中文文档(八)

将属性名称传递给组合类型 我们可以使用更多的注释形式编写上面相同的示例,其中我们有选项将属性名称传递给 composite(),而不是完整的构造: from sqlalchemy.orm import...我们还将实现__composite_values__()方法,这是一个固定名称,被composite()构造函数所识别(在使用传统数据类中介绍过),它指示了一种接收对象作为值的标准方式,这种情况下将取代通常的数据类方法论...将属性名称传递给复合对象 我们可以使用更多带有注释形式编写上面相同的示例,其中我们可以选择将属性名称传递给 composite() 而不是完整的构造: from sqlalchemy.orm import...将属性名称传递给复合对象 我们可以使用更多带有注释形式编写上面相同的示例,其中我们可以选择将属性名称传递给 composite() 而不是完整的构造: from sqlalchemy.orm import...我们还将实现__composite_values__()方法,这是由composite()构造(在使用传统数据类中介绍)中识别的固定名称,表示以值的扁平元组形式接收对象的标准方式,在这种情况下将取代通常的数据类导向方法

15010

SqlAlchemy 2.0 中文文档(七)

Parent()对象而不传递children时,上述映射将为Parent.children生成一个列表,类似地,当构造新的Child()对象而不传递parent时,将为Child.parent生成一个...使用映射数据类字段 当使用声明式数据类时,类上也可以使用映射字段,这些字段将成为数据类构造过程的一部分,但不会被映射。任何不使用 Mapped 的字段都将被映射过程忽略。...使用映射数据类字段 当使用声明性数据类时,类上也可以使用映射字段,这些字段将成为数据类构造过程的一部分,但不会被映射。任何未使用Mapped的字段都将被映射过程忽略。...Parent()对象时为Parent.children生成一个列表,当构造新的Child()对象时,如果不传递parent,则Child.parent将生成一个None值。...使用映射数据类字段 当使用声明性数据类时,也可以在类上使用映射字段,这些字段将成为数据类构造过程的一部分,但不会被映射。任何不使用Mapped的字段都将被映射过程忽略。

19220

SqlAlchemy 2.0 中文文档(十)

主要”映射器的概念已经存在多个 SQLAlchemy 版本,但从 1.3 版本开始,此功能已被弃用。其中一个主要映射器有用的情况是构建与备用可选择类之间的关系时。...“主要”映射器的概念在许多版本的 SQLAlchemy 中一直存在,但自版本 1.3 起,此功能已不建议使用。唯一需要主要映射器的情况是在构造与另一个可选择的类的关系时。...这是一个可选的仅位置参数,如果存在,必须是传递的第一个位置参数。如果省略,则将使用 mapped_column() 映射到的属性名称作为 SQL 列名。...将此构造添加到声明式映射类的指南与insert_sentinel() 构造的相同;数据库表本身也需要具有此名称。...主映射器的功能现在更适合使用AliasedClass构造,1.3 中也可以作为relationship()的目标使用

11810

SQL笔记(1)——MySQL创建数据库

需要注意的是,为了使用外键约束,必须先创建被参考表 teacher 中的 id ,并将其设置为主键。...因为外键约束的作用是确保参考表中的某一必须存在于当前表的某一中,所以参考表中的该必须设置为唯一的且。...UNIQUE:唯一性约束,用于限制中的数据不能重复。 NOT NULL:约束,用于限制中的数据不能为。 CHECK:检查约束,用于限制中的数据必须满足指定的条件。...主键所包含的必须满足数据每一行都具有唯一性和空性的条件,主键通常用于对表进行数据的查询、更新和删除操作。在表中,主键是通过具体的值来定义的,而不是定义在表上的某个独立的约束。...唯一约束:可以确保表中某一的值是唯一的,也可避免特定列出现值。 约束:可以确保表中的某一不为。 检查约束:可以定义额外的规则来确保某一或多个的数据值符合规定。

3K20

SqlAlchemy 2.0 中文文档(四)

值性取决于是否使用了Optional[]类型修饰符。...在上面的示例中,User.id和Address.id被标记为主键。 综合考虑,字符串表名称以及声明列表的组合在 SQLAlchemy 中被称为 table metadata。...每个属性的名称对应于要成为数据库表的。每个的数据类型首先取自与每个Mapped注释相关联的 Python 数据类型;对于 INTEGER 使用 int,对于 VARCHAR 使用 str 等。...声明性表配置 使用声明性表的显式模式名称 为声明式映射的设置加载和持久化选项 显式命名声明式映射 将额外添加到现有的声明式映射类 使用命令式表进行声明式(即混合声明式...,然后传递给复合体 直接映射,将属性名称传递给复合体 命令映射和命令表 使用传统数据类 跟踪复合体上的原位变化 重新定义复合体的比较操作 嵌套复合体 复合体

11110

SqlAlchemy 2.0 中文文档(六)

其他类型的属性包括使用 column_property() 构造定义的 SQL 表达式,以及使用 composite() 构造进行多映射。...然而我们将这一重新映射到同一属性名称下,以便由deferred() 构造进行控制。...在声明式表和混合表映射中,当我们定义一个ForeignKey 构造时,我们总是使用名称而不是映射的类名称来命名目标表。...当我们定义relationship()构造时,由于这些构造在两个映射类之间创建了一个链接,其中一个必然在另一个之前被定义,我们可以使用其字符串名称引用远程类。...当我们定义 relationship() 构造时,由于这些构造在两个映射类之间创建了链接,其中一个必然在另一个之前被定义,我们可以使用其字符串名称引用远程类。

16910

SqlAlchemy 2.0 中文文档(三十)

如果ForeignKeyConstraint 报告对于一组设置了 ForeignKeyConstraint.ondelete 为 CASCADE,或者对于可为设置了 SET NULL,则在关系关键字参数集合中将选项...可以使用在 Naming Declarative Mapped Columns Explicitly 中描述的技术修改映射的,通过将显式地分配给一个新名称: Base = automap_base(...如果ForeignKeyConstraint报告对于一组设置了CASCADE或对于可为设置了SET NULL的ForeignKeyConstraint.ondelete,则将在关系关键字参数集合中将选项...可以使用在 Naming Declarative Mapped Columns Explicitly 中描述的技术来修改映射的,通过将显式地分配给新名称: Base = automap_base()...可以使用在 显式命名声明性映射 中描述的技术修改映射的,通过将显式分配给一个新名称: Base = automap_base() class TableB(Base): __tablename

14610

SqlAlchemy 2.0 中文文档(二十七)

ORM 构造,其他部分未涵盖,在此处。...使用 Operators.bool_op() 的一个关键优势是,在使用构造时,返回的表达式的“布尔”特性将存在于 PEP 484 目的上。...版本 1.2 中新增:“expanding” 绑定参数 如果传递了一个列表,则渲染一个特殊的“列表”表达式,该表达式特定于正在使用的数据库。...==运算符为多对一比较提供了部分功能: 不支持与集合进行比较。请使用Comparator.contains()。 与标量一对多相比,将生成一个子句,比较父级中的目标与给定目标。...这对于超出简单 AND 比较的查询不起作用,例如使用 OR 的查询。请使用显式连接、外连接或Comparator.has()进行更全面的多对一标量成员测试。

21310

SqlAlchemy 2.0 中文文档(五十四)

只需要这些 行为 象主键一样,例如,作为行的唯一且的标识符。...映射的类需要为每个要存储独立值的属性明确指定名称;当两具有相同的名称并且没有消歧时,它们就属于同一属性,其效果是将一的值复制到另一,根据哪一首先分配给属性。...当出现警告或异常时,可以通过将分配给名称不同的属性来解决问题,或者如果希望将它们组合在一起,则使用column_property()使其明确。...我收到了一个关于“隐式组合 X 在属性 Y 下”的警告或错误 这种情况指的是映射包含两个,这两个由于它们的名称而被映射到同一属性名称下,但没有迹象表明这是有意的。...映射类需要为每个要存储独立值的属性指定明确的名称;当两个具有相同的名称并且没有消歧义时,它们就会落入同一个属性下,效果是从一个中的值被复制到另一个中,取决于哪个首先分配给属性。

7010

SqlAlchemy 2.0 中文文档(五十八)

逻辑已更新为扫描所有给定表达式,以便使用第一个类型,并始终确保存在类型。感谢 David Evans 提交的拉取请求。...SELECT 语句中使用的“匿名”标签作为 SQL 表达式元素的标签;主要示例是可能作为类型的一部分发出的 SQL 函数,其中标签名称默认应与列名称匹配。...逻辑已更新为扫描所有给定表达式,以便使用第一个类型,并始终确保存在类型。拉取请求由 David Evans 提供。...逻辑已更新以扫描所有给定表达式,以使用第一个类型,并始终确保存在类型。感谢 David Evans 提交的拉取请求。...为了解决这个问题,当检测到 “给出 RETURNING 时没有描述” 的特定情况时,会生成一个带有正确游标描述的“结果”,并在工作游标的位置使用它。

6410
领券