我需要找到一种方法来提醒用户,他所介绍的内容已经存在于数据库中,我有一个Flask应用程序和一个SQLAlchemy数据库,我也在使用Flask-WTF, 我尝试了一个非常不稳定的解决方案:我将表单捕获的数据存储在变量中,并且我正在考虑将它们连接起来,并使用查询来搜索它们是否存在。
nombre1 = form.nombre_primero.data
nombre2 = form.nombre_segundo.data
无论如何,我认为这不是处理情况的最合适方法。
Flask有某种方法可以做到这一点吗?还是您会推荐我一些东西? 如果您能帮助我,我将不胜感激!
答案 0 :(得分:1)
我将通过创建由sqlalchemy模型中的select字段构成的复合唯一约束来解决此问题。
可以通过__table_args__
class property of the declarative base另外配置表。
from app import db
from sqlalchemy import UniqueConstraint
class Role(db.Model):
id = db.Column(db.Integer, primary_key=True)
nombre_primero = db.Column(db.String(64))
nombre_segundo = db.Column(db.String(64))
__table_args__ = (
UniqueConstraint('nombre_primero', 'nombre_segundo', name='uix_1'),
)
您可以将数据写入表中,并处理发生冲突时引发的异常。
答案 1 :(得分:0)
好的,因此有一种简单的方法可以解决此问题,在表本身上,您将根据所定义的某种条件创建一个拒绝重复条目的条件。
因此,实现此目的的一种简单方法是设置混合函数。
在此处阅读有关Hybrid Attributes的更多信息。
from sqlalchemy.ext.hybrid import hybrid_property
现在为表格创建模型, 例如:
class xyz(db.Model):
__tablename__ = 'xyz'
#tablevalues defined here
@hybrid_property
def xyz()
#make a method here which rejects duplicate entries.
阅读文档后,您将了解其工作原理。 我无法直接解决您的问题,因为您没有提供太多信息。但是通过这种方式,您可以检查条目,并使某些方法变得容易,以便您可以根据需要检查数据是否唯一。