1
334862132 OP 我现在只想删除 roles_rights 表的数据,但是现在想删除的话必须要把 role 对应的数据删掉,求问,模型如何能在不动其他外键表的情况下只删除 roles_rights 表的数据
|
2
XGF 2020-04-28 17:17:18 +08:00
去掉 db.ForeignKey
|
3
334862132 OP @XGF 把 db.ForeignKey 去掉了,添加时候不就出问题了....
模型好麻烦,还是 sql 原生写起来舒服.... |
4
more1sec 2020-04-28 18:43:39 +08:00 1
我以前的公司,全部表都没用外键,靠业务代码维护数据一致性
|
5
encro 2020-04-28 19:38:25 +08:00
db.ForeignKey 有参数,可以设置不嵌套删除,
然后 db.Column 有参数可以设置允许为 null, 你删除 roles_rights 时,如果删除了 role 和 right,只能说明你表关联设置错了。 哎呀,怎么是 flask 不是 django? 应该也差不多。 |
7
saulshao 2020-04-28 20:13:35 +08:00
Django 允许在定义模型的时候,显式指定不要使用数据库中的外键
|
8
Philippa 2020-04-29 02:05:11 +08:00
这个和 flask 没有关系啊,这个是 SqlAlchemy,这里你可能指 flask-sqlalchemy 。这个删除外键就可以了,但是删除之后做联结查询会变慢,而创建过程会加快。如果你想清空 roles_rights 而不想影响其他两张表,建议直接用 sql 来删除。如果非要用代码来做,那如 @encro 所言,你需要把 right 和 role 两张表外键处允许为空,然后直接写一个 class 没有外键的,然后把它删除就可以了。你可以用 class 的 mixin 写法来组合你的 fields 。
|
10
334862132 OP @Philippa
解决了,没用 sql 原生写,全篇代码都没用 sql 原生,我要用 sql 原生太破坏美感了,直接先删除,在插入以达到升级效果,虽然看着蛋疼,但是好歹能用.... |
12
Philippa 2020-04-29 23:07:37 +08:00 via iPhone
@jsisjs20130824 语法糖,将继承了 sqlachemy 的 model 的 class 相互继承
|