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'")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-09-30 python笔记66 - DES/CBC/pkcs5padding加解密(pyDes)
2021-09-30 python测试开发django-146.bootstrap-table列属性设置(Column)
2021-09-30 python测试开发django-145.$.ajax() 请求 javascript 获取当前 URL 参数