SQLAlchemy和MySQL中一对多关系中列的唯一约束

ock猴

我不确定我是否正确地为这个问题命名。我可以向任何表中添加足够好的唯一约束,但是在下面的情况下,我不确定该如何做:

class Branch(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(160))
    #foreign key for 'branches' in Account class. access with Branch.account
    account_id = db.Column(db.Integer, db.ForeignKey('account.id'))

class Account(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(160), unique=True)
    branches = db.relationship('Branch', backref = 'account', lazy = 'dynamic')

因此,当我向“分支”表的“名称”列添加唯一约束时,无法将“相同名称”的分支添加到其他帐户。例如,西雅图可以是AccountA和AccountB的分支。

我想做的是应用一个仅在account.id相同时检查唯一性的约束。这可能吗?

ock猴

感谢dirn,指出重复项,我添加了:

__table_args__ = (db.UniqueConstraint('account_id', 'name', name='_account_branch_uc'),
                 )

到我的Branch类,然后通过以下方式将其推送给Alembic:

def upgrade():
    op.create_unique_constraint('_account_branch_uc', 'branch', ['name','account_id'])

不过,我会指出,由于我是通过alebmic手动添加此约束的,因此我不确定是否将其正确添加到模型中。我想我会找出最终何时擦除数据库并启动一个新数据库。

编辑

我已经滚动了一个新的数据库,并且__table_args__从上面的数据库可以正常工作!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

嵌套一对多关系的唯一约束

来自分类Dev

sqlalchemy中多列的唯一约束

来自分类Dev

MySQL与一对多关系

来自分类Dev

SQLAlchemy-筛选一对多关系中的子级

来自分类Dev

在SQLAlchemy中为ORM创建一对多关系

来自分类Dev

MySQL-列组合的唯一约束:避免错误?

来自分类Dev

MySQL-列组合的唯一约束:避免错误?

来自分类Dev

SQLAlchemy一对多关系加入?

来自分类Dev

查询一对多关系SQLAlchemy

来自分类Dev

查询一对多关系SQLAlchemy

来自分类Dev

如何删除Mysql中的唯一约束?

来自分类Dev

在 2 列和第三列中的组合之间定义唯一约束

来自分类Dev

2列中的任何SQL唯一约束

来自分类Dev

表变量中多列的唯一约束

来自分类Dev

在MySQL和H2中删除唯一约束

来自分类Dev

Jpa 2.0和唯一约束

来自分类Dev

如何在mysql中的2列之间有2路唯一约束

来自分类Dev

两列唯一约束ActiveAndroid

来自分类Dev

外键列的唯一约束

来自分类Dev

序列列的唯一约束

来自分类Dev

两列组合的唯一约束?

来自分类Dev

外键列的唯一约束

来自分类Dev

Entity Framework 5中的一对零/一对和一对多关系

来自分类Dev

MySQL数量和大小写与一对多关系

来自分类Dev

Oracle约束:混合唯一约束和检查约束

来自分类Dev

GUI生成中的Spring Roo和一对多关系

来自分类Dev

如何在Django / Mysql中建立一对多关系?

来自分类Dev

防止一对多关系中多余的外键列

来自分类Dev

如何在symfony1.4中的同一表中一对多关系