前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask 学习-83.Flask-SQLAlchemy 联合唯一约束

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

作者头像
上海-悠悠
发布2022-10-09 11:40:23
1.3K0
发布2022-10-09 11:40:23
举报

前言

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

联合唯一约束

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

代码语言:javascript
复制
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}'...)>"

测试

代码语言:javascript
复制
>>> book=Books(name='selenium',publisher='上海')
>>> db.session.add(book)
>>> db.session.commit()

可以添加成功

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

代码语言:javascript
复制
    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'")

2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学!

本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00

报名费:报名费3000一人(周期3个月)

联系微信/QQ:283340479

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 联合唯一约束
  • 测试
    • 报名费:报名费3000一人(周期3个月)
      • 联系微信/QQ:283340479
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档