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

SqlAlchemy 2.0 中文文档(十五)

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

10110

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 中文文档(二十三)

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

11610

SqlAlchemy 2.0 中文文档(十七)

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

17510

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 中,其他类型列也可能充当“自动增量”列,而不一定在其具有这样标志。

12010

Pythonflask: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.1K90

Pythonflask: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来指示工作单元以这种方式工作;使用约束也必须正确配置。

5410

SqlAlchemy 2.0 中文文档(十一)

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

8610

SqlAlchemy 2.0 中文文档(二十)

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

7610

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 传播。

10410

SqlAlchemy 2.0 中文文档(三十)

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

11410

SqlAlchemy 2.0 中文文档(十九)

未来 SQLAlchemy 发布版本可能会添加更多选择来操作已加载对象加载器选项。## 延迟加载 默认情况下,所有对象之间关系都是延迟加载。...对于保证具有元素属性,例如引用相关对象多对一引用,其中引用不为 NULL,可以通过使用内连接使查询更有效;这在映射级别通过 relationship.innerjoin 标志可用: class...(1, 2) 提示 通过“简单”我们指的是 relationship.primaryjoin 条件表达了“一”侧主键与“多”侧直接之间相等比较,没有任何额外条件。...对于保证具有元素属性,例如对一个相关对象多对一引用,其中引用不为 NULL,通过使用内连接可以使查询更有效率;这可以通过映射级别的relationship.innerjoin标志来实现: class...(1, 2) 提示 “简单”是指 relationship.primaryjoin 条件表达了“一”侧主键和“多”侧直接之间相等比较,没有任何其他条件。

12810

Flask数据库过滤器与查询集

是让role对象可以获得user中属性 # backref="role"可以让user对象有个role属性获得role中信息,这个不是必须添加,如果不添加那么user对象要通过role_id...')) 关系使用address表中连接了两。...添加到address模型中person_id列被定义为,就是这个建立起了联系。传给db.ForeignKey()参数’person_id’表明,这一列值是person表中行id值。...如果无法决定,你就要为db.relationship()提供额外参数,从而确定所用,常用配置选项如下所示: backref:在关系另一个模型中添加反向引用 primary join:明确指定两个模型之间使用联结条件...下面列出常用过滤器,完整列表请参见SQLAlchemy官方文档: filter():把过滤器添加到原查询,返回一个新查询 filter_by():把等值过滤器添加到原查询,返回一个新查询

6.8K10

SqlAlchemy 2.0 中文文档(十四)

返回一个KeyFuncDict工厂,它将根据 ORM 映射实例特定命名属性值生成新字典,以添加到字典中。 注意 目标属性值必须在将对象添加到字典集合时被赋予其值。...返回一个KeyFuncDict工厂,它将根据 ORM 映射实例特定Column映射属性值生成新字典,以添加到字典中。 注意 目标属性值必须在将对象添加到字典集合时分配其值。...返回一个KeyFuncDict工厂,该工厂将根据 ORM 映射实例特定命名属性值生成新字典,以添加到字典中。 注意 目标属性值必须在将对象添加到字典集合时分配其值。...返回一个KeyFuncDict工厂,它将根据要添加到字典中 ORM 映射实例特定命名属性值产生新字典。 注意 目标属性值必须在对象添加到字典集合时被赋值。...返回一个KeyFuncDict工厂,它将根据 ORM 映射实例特定Column属性值生成新字典,以添加到字典中。 注意 目标属性值必须在将对象添加到字典集合时分配其值。

7410
领券