前言
我们可以在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:demorest_api_flaskvenvlibsite-packagespymysqlerr.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