Flask 学习-83.Flask-SQLAlchemy 联合唯一约束

Posted 上海-悠悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask 学习-83.Flask-SQLAlchemy 联合唯一约束相关的知识,希望对你有一定的参考价值。

前言

我们可以在Flask-SQLAlchemy字段中添加unique=True设置该字段为唯一约束,如果需要2个字段联合唯一,需用到UniqueConstraint()

联合唯一约束

比如一个书名可以有不同的出版社,但是同一个出版社不能有重复的书名。
Flask-SQLAlchemy 中 使用 db.UniqueConstraint() 设置联合唯一约束

class Books(db.Model):
    __tablename__ = 'book'  # 数据库表名
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(50), nullable=False)
    publisher = db.Column(db.String(100), nullable=False)

    __table_args__ = (
        db.UniqueConstraint("name", "publisher", name='unique_name_publisher'),
    )

    def __repr__(self):
        return f"<Books(id='self.id', name='self.name'...)>"

测试

>>> book=Books(name='selenium',publisher='上海')
>>> db.session.add(book)
>>> db.session.commit()

可以添加成功

重复添加上面数据就会报错

    err.raise_mysql_exception(self._data)
  File "D:\\demo\\rest_api_flask\\venv\\lib\\site-packages\\pymysql\\err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.IntegrityError: (1062, "Duplicate entry 'selenium-上海' for key 'unique_name_publisher'")

以上是关于Flask 学习-83.Flask-SQLAlchemy 联合唯一约束的主要内容,如果未能解决你的问题,请参考以下文章

Flask学习总结

python--flask学习1

Flask学习-Flask app启动过程

flask框架的学习

Flask 学习-42.Flask-RESTX 快速入门

Python Flask教程学习03