• Flask 学习83.FlaskSQLAlchemy 联合唯一约束 上海


    前言

    我们可以在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'")
    
  • 相关阅读:
    17. 文件查找
    18. 后台进程
    16. Linux 文件目录权限
    15. SSH 远程
    14. 用户管理
    Emacs Python 自动补全--Elpy
    C++ 程序在运行时不显示dos界面
    OpenCV设置摄像头分辨率及全屏显示
    #error : Xiron Platform Abstraction Layer
    Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/16746418.html
Copyright © 2020-2023  润新知