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

SqlAlchemy 2.0 中文文档(五十四)

中,所有表实际上都应该具有某种主键,否则你可能需要实际更新或删除特定行)。...几乎在所有情况下,表都具有所谓的 候选键,这是一列或一系列列,唯一标识一行。如果表确实没有这个,且具有实际完全重复的行,则该表不符合第一范式,无法进行映射。...事件的示例,以协调设置具有多对一关系的外键属性。...post_update 功能,在指向自身的行/相互依赖的行文档中记录,涉及在对特定关系绑定的外键进行更改时发出 UPDATE 语句,除了通常会对目标行发出的 INSERT/UPDATE/DELETE 之外...该特性,详细说明请参见指向自身的行/相互依赖行,会在特定关系绑定的外键发生更改时发出 UPDATE 语句,除了会针对目标行通常发出的 INSERT/UPDATE/DELETE 之外。

36010

python flask web开发实战 DB flask-sqlalchemy

连接方式 MySQL mysql://username:password@hostname/database Postgres postgresql://username:password@hostname...Interval 时间间隔 Enum PickleType LargeBinary 二进制文件 ---- primary_key unique index nullable default 4、外键引用...role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) relationship中的参数: backref 在关系的另一个模型中添加反向关系...first() 返回查询的第一个结果,如果没有结果,则返回None first_or_404() 返回查询的第一个结果,如果没有结果,则终止请求,返回404 错误响应 get() 返回指定主键对应的行...,如果没有对应的行,则返回None get_or_404() 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回404 错误响应 count() 返回查询结果的数量 paginate()

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

    SqlAlchemy 2.0 中文文档(十五)

    这两种用例是: 一个表包含对自身的外键,而且单个行将具有指向其自身主键的外键值。 两个表都包含对另一个表的外键引用,每个表中的一行引用另一个表中的另一行。...ON UPDATE CASCADE,没有外键支持 在使用不支持引用完整性的数据库,并且使用具有可变值的自然主键时,SQLAlchemy 提供了一个功能,允许将主键值传播到已引用的外键到有限程度,通过针对立即引用主键列的外键列发出...这两种用例是: 一张表包含一个指向自身的外键,而且一行将具有指向自己主键的外键值。 两个表分别包含一个外键引用另一个表,每个表中的一行引用另一个表。...当为 True 时,假定数据库上的外键已配置为 ON UPDATE CASCADE,并且数据库将处理从源列到依赖行的 UPDATE 传播。...当特定的映射安排将导致两行彼此依赖时,请使用此标志,例如,一个表与一组子行之间存在一对多关系,并且还有一个列引用该列表中的单个子行(即两个表相互包含对方的外键)。

    26110

    SqlAlchemy 2.0 中文文档(七十五)

    #3499 ### 为传递映射类、实例作为 SQL 文字添加了特定检查 现在,类型系统对于在本应被处理为字面值的上下文中传递 SQLAlchemy“可检查”对象具有特定检查。...,而不是子类表,从而允许配置的 ON DELETE CASCADE 发生在配置的外键上。...ON DELETE 和 ON UPDATE 外键短语现在反映 Inspector现在将包括 SQLite 方言上的外键约束的 ON DELETE 和 ON UPDATE 短语,并且作为Table的一部分反映的...#3499 添加了用于传递映射类、实例作为 SQL 文字的特定检查 现在,类型系统对于在否则会被处理为文字值的上下文中传递 SQLAlchemy “可检查”对象具有特定检查。...ON DELETE 和 ON UPDATE 外键短语现在反映 Inspector现在将包括 SQLite 方言上外键约束的 ON DELETE 和 ON UPDATE 短语,并且作为Table的一部分反映的

    33010

    SqlAlchemy 2.0 中文文档(四十)

    定义外键 SQL 中的外键是一个表级构造,它将该表中的一个或多个列约束为仅允许存在于另一组列中的值,通常但不总是位于不同的表上。我们称被约束的列为外键列,它们被约束到的列为引用列。...引用列几乎总是定义其拥有表的主键,尽管也有例外情况。外键是连接具有关系的行对的“关节”,SQLAlchemy 在其几乎每个操作的每个区域都赋予了这个概念非常深的重要性。...外键也可以在表级别使用 ForeignKeyConstraint 对象定义。此对象可以描述单列或多列外键。多列外键称为复合外键,几乎总是引用具有复合主键的表。...引用列几乎总是定义其所属表的主键,尽管也有例外情况。外键是连接具有彼此关系的行对的“接头部分”,在几乎每个操作中,SQLAlchemy 都将这个概念赋予了非常重要的意义。...外键也可以在表级别定义,使用ForeignKeyConstraint对象。此对象可以描述单列或多列外键。多列外键被称为复合外键,并且几乎总是引用具有复合主键的表。

    26410

    SqlAlchemy 2.0 中文文档(二十三)

    通过外键引用目标行的行,假设它们使用两个映射对象类型之间的 relationship() 跟踪,还将看到它们的外键属性被更新为 null,或者如果设置了级联删除,则相关行也将被删除。...删除和删除孤儿级联的组合涵盖了 SQLAlchemy 需要在将外键列设置为 NULL 与完全删除行之间做出决定的情况。...另见 从多对多表中删除行 使用外键 ON DELETE 与多对多关系 ### 使用 ORM 关系的外键 ON DELETE 级联 SQLAlchemy 的“delete”级联行为与数据库FOREIGN...另请参阅 从多对多表中删除行 使用外键 ON DELETE 处理多对多关系 使用 ORM 关系中的外键 ON DELETE 级联 SQLAlchemy 的“delete”级联的行为与数据库FOREIGN...通过外键引用目标行的行,假设它们是使用两个映射对象类型之间的relationship()进行跟踪的,也会看到它们的外键属性被更新为 null,或者如果设置了删除级联,相关行也将被删除。

    28710

    SqlAlchemy 2.0 中文文档(十七)

    参见 将返回的行与参数集相关联 - 介绍了确保输入数据和结果行之间对应关系的方法背景,而不会显著降低性能 ### 使用异构参数字典 ORM 批量插入功能支持“异构”的参数字典列表,这基本上意味着“各个字典可以具有不同的键...中,选定的后端可能包括特定方言的Insert 构造,这些构造还具有执行“upserts”或将参数集中的现有行转换为近似 UPDATE 语句的能力。...这基本上意味着“各个字典可以具有不同的键”。...的选定后端可能包括特定于方言的Insert构造,这些构造还具有执行“upserts”或将参数集中的现有行转换为近似 UPDATE 语句的能力。...的部分后端可能包含特定于方言的Insert构造,此外还具有执行“upserts”或将参数集中的现有行转换为近似 UPDATE 语句的能力。

    40410

    Python的flask:models.py来创建mysql数据库

    Python 3.6 用到的包 flask下有一个叫flask_sqlalchemy的数据库框架,没有安装的可以使用下面的来安装 $ pip install -i https://pypi.douban.com...它存储在你必须创建的 SQLAlchemy 实例上。...,各个一些表之间有外键相关联的情况 如图,相对很复杂的ER图 [ER.png] 如图大部分的外键都是,一个表的id对于另外一个表的相对应的id 代码如下 # -*- coding: utf-8 -*-...管理员登录日志外键关系关联 oplogs = db.relationship('Oplog', backref='admin') # 管理员操作日志外键关系关联 def __repr...,那么第一个参数就是对应的类的名称,backref后面跟的是本表的名字 接下来就是userlog表的类Userlog中的user_id的外键是user表中的id,外键通过db.Foreignkey()来建立外键

    6.3K90

    SqlAlchemy 2.0 中文文档(三十九)

    使用“覆盖”技术,明确指定那些是主键的列或具有外键约束的列: my_view = Table( "some_view", metadata, Column("view_id",...我们可能会发现自己处于一个情况下,其中一个MetaData集合可能包含表示这两个数据库表的四个Table对象,其中一个或两个附加表是由反射过程生成的;这是因为当反射过程遇到要反射的表上的外键约束时,它会分支出去反射该引用表...使用“override”技术,明确指定那些是主键或具有外键约束的列: my_view = Table( "some_view", metadata, Column("view_id...我们可能会发现自己处于这样一种情况:一个MetaData集合可能包含多达四个Table对象,代表这两个数据库表,其中一个或两个附加表是由反射过程生成的;这是因为当反射过程遇到一个正在被反射的表上的外键约束时...此标志指示列是否具有某种数据库端的“自动增量”标志。在 SQLAlchemy 中,其他类型的列也可能充当“自动增量”列,而不一定在其上具有这样的标志。

    42610

    Python的flask:models.py来创建mysql数据库

    它存储在你必须创建的 SQLAlchemy 实例上。...的Model类 app.config的两个,一个是连接数据库的,跟平常的SQLAlchemy表示的一样,一个是是否可以跟踪修改,一般是True __tablename__来作为表的名称 db.Column...,各个一些表之间有外键相关联的情况 如图,相对很复杂的ER图 如图大部分的外键都是,一个表的id对于另外一个表的相对应的id 代码如下 # -*- coding: utf-8 -*-# @Time...True, default=datetime.now) # 添加时间 adminlogs = db.relationship('Adminlog', backref='admin') # 管理员登录日志外键关系关联...,那么第一个参数就是对应的类的名称,backref后面跟的是本表的名字 接下来就是userlog表的类Userlog中的user_id的外键是user表中的id,外键通过db.Foreignkey()来建立外键

    1.1K60

    SqlAlchemy 2.0 中文文档(十三)

    在ForeignKey约束上配置ondelete="cascade"。这也在使用 ORM 关系进行外键级联删除中详细说明。...这些对象将需要与父对象解除关联,对于一对多集合,这意味着外键列将被设置为 NULL,或者根据 级联 设置,可能希望为这些行发出 DELETE。...对于大型集合来说,这是不可行的,因此我们转而依靠数据库自身的能力,使用外键 ON DELETE 规则自动更新或删除行,指示工作单元无需实际加载这些行即可处理它们。...对于大型集合来说,这是不可行的,因此我们转而依赖数据库自身的能力来使用外键 ON DELETE 规则自动更新或删除行,指示工作单元放弃实际需要加载这些行以处理它们。...可以通过在relationship()构造上配置relationship.passive_deletes来指示工作单元以这种方式工作;使用的外键约束也必须正确配置。

    22210

    SqlAlchemy 2.0 中文文档(十一)

    关于relationship()的集合配置的详细信息,请参阅自定义集合访问。 根据需要将带有注释和不带注释 / 命令式样式之间的其他差异进行说明。 一对多 一对多关系在子表上放置一个引用父表的外键。...有关relationship()的集合配置详细信息,请参阅自定义集合访问。 根据需要,将注意到注释和非注释/命令式样式之间的其他差异。 一对多 一对多关系在子表上放置一个外键,引用父表。...另请参阅 删除 使用 ORM 关系的外键 ON DELETE 级联 删除孤儿 多对一 多对一在父表中放置了一个引用子表的外键。...,但表示在任何时候只会有一行指向特定父行的行。...在这里的一个性能较高的选项是使用数据库中使用的外键的 ON DELETE CASCADE 指令。假设数据库支持这个特性,数据库本身可以被设置为在“子”中的引用行被删除时自动删除“次要”表中的行。

    23710

    SqlAlchemy 2.0 中文文档(二十)

    对于从不同“分片”或分区加载具有相同主键的对象的典型情况,请首先考虑每个分片使用单独的Session对象。 “身份令牌”是可以与新加载对象的标识键相关联的任意值。...此元素首先存在于支持按行“分片”的扩展中,其中对象可以从特定数据库表的任意数量的副本加载,尽管这些副本具有重叠的主键值。...这是 join() 函数的“外连接”版本,具有相同的行为,除了生成 OUTER JOIN 外,还生成了其他用法详细信息,请参阅该函数的文档。...此元素首先存在以支持执行按行“sharding”的扩展,其中对象可以从特定数据库表的任何数量的副本中加载,尽管它们具有重叠的主键值。...这是join()函数的“外连接”版本,具有相同的行为,只是生成了一个外连接。有关其他用法细节,请参阅该函数的文档。

    32610

    Sentry 开发者贡献指南 - 数据库迁移

    目录 命令 将您的数据库升级到最新 将您的数据库移动到特定的迁移 为迁移生成 SQL 生成迁移 将迁移合并到 master 指南 过滤器 索引 删除列/表 列 表 外键 重命名表 添加列 向列添加 NOT...由于它已经通过 id 对表进行排序,因此我们无法利用字段上的任何索引,并且可能会为每个块扫描大量行。...外键 创建外键大多没问题,但是对于像 Project、Group 这样的大/繁忙的表,由于获取锁的困难,它可能会导致问题。您仍然可以创建 Django 级别的外键,而无需创建数据库约束。...这是因为 Postgres 仍然需要对所有行执行非空检查,然后才能添加约束。在小表上这可能没问题,因为检查会很快,但在大表上这可能会导致停机。...这需要 Postgres 锁定表并重写它。相反,更好的选择是: 在 Postgres 中添加没有默认值的列,但在 Django 中添加默认值。这使我们能够确保所有新行都具有默认值。

    3.6K20

    SqlAlchemy 2.0 中文文档(十)

    user.id 和 address.user_id 列通过外键相等,因此在映射中它们被定义为一个属性,即 AddressUser.id,使用 column_property() 来指示一个特殊的列映射。...这是为了消除歧义,将 address.id 列的映射与同名的 AddressUser.id 属性区分开来,这里已经被分配为引用 user 表与 address.user_id 外键结合的表。...user.id和address.user_id列由外键等于,因此在映射中它们被定义为一个属性AddressUser.id,使用column_property()指示专门的列映射。...这是为了消除歧义,将address.id列的映射与同名的AddressUser.id属性分开,这里已经被分配为引用user表与address.user_id外键的属性。...当为 True 时,假定数据库上的外键已配置为 ON UPDATE CASCADE,并且数据库将处理从源列到联合表行上的依赖列的 UPDATE 传播。

    24810

    SqlAlchemy 2.0 中文文档(八十)

    这次重构的一个副作用是,具有use_alter=True的ForeignKeyConstraint对象将不会在 SQLite 上发出,因为 SQLite 不支持外键的 ALTER。...= addresses.user_id LIMIT 10 具有联接表继承的可变主键 在子表具有外键指向父表主键的联接表继承配置现在可以在像 PostgreSQL 这样支持级联的数据库上更新。...= addresses.user_id LIMIT 10 具有联接表继承的可变主键 在具有子表主键外键到父表主键的联接表继承配置上,现在可以在类似于 PostgreSQL 的具有级联功能的数据库上更新子表...[ticket:1186] 指定具有声明列的外键,即 ForeignKey(MyRelatedClass.id) 不会阻止“use_get”条件的发生 [ticket:1492] relationship...= addresses.user_id LIMIT 10 使用联接表继承的可变主键 在子表具有外键到父表主键的联接表继承配置中,现在可以在类似 PostgreSQL 这样支持级联的数据库上进行更新

    20310

    SqlAlchemy 2.0 中文文档(四十九)

    它也不支持外键约束;虽然 CREATE TABLE 语句接受外键选项,但在使用 MyISAM 存储引擎时,这些参数将被丢弃。反映这样的表也不会产生外键约束信息。...外键约束的反射 并非所有 MySQL / MariaDB 存储引擎都支持外键。在使用非常常见的 MyISAM MySQL 存储引擎时,通过表反射加载的信息将不包括外键。...只有候选行与表中现有的主键或唯一键不匹配时,才会插入候选行;否则,将执行更新。该语句允许单独指定要插入的值与要更新的值。...外键约束的反射 并非所有 MySQL / MariaDB 存储引擎都支持外键。当使用非常常见的MyISAM MySQL 存储引擎时,表格反射加载的信息将不包括外键。...外键约束的反射 并非所有的 MySQL / MariaDB 存储引擎都支持外键。在使用非常常见的 MyISAM MySQL 存储引擎时,通过表反射加载的信息将不包括外键。

    40810

    SqlAlchemy 2.0 中文文档(三十)

    请注意,这意味着自动映射将不会为从子类到父类的外键生成 任何 关系。如果一个映射还具有从子类到父类的实际关系,那么这些关系需要是显式的。...在下面的例子中,由于 Engineer 到 Employee 有两个单独的外键,我们需要设置我们想要的关系以及 inherit_condition,因为这些都不是 SQLAlchemy 可以猜测的: class...请注意,这意味着 automap 将不会为从子类到超类的外键生成 任何 关系。 如果映射还具有从子类到超类的实际关系,那么这些关系需要显式说明。...请注意,这意味着 automap 不会为从子类到超类的外键生成任何关系。如果映射实际上还有从子类到超类的关系,那么这些关系需要是显式的。...在下面的例子中,由于从 Engineer 到 Employee 有两个单独的外键,我们需要设置我们想要的关系以及 inherit_condition,因为这些是 SQLAlchemy 无法猜测的事情:

    32210
    领券