flask sqlalchemy 查询需要的值是否存在,搞不定,求助

在注册的接口,传递过来的参数,比如 电话,昵称 等
在用sqlalchemy查询的时候,有什么方法可以一次性的查询所有需要 判断 是否唯一的数据
比如 电话,昵称,email

一次性查询这三个,如果就 电话 有重复的,就返回 电话重复 相对应的提示

email = User.query.filter_by(email=email).first()
if email:
    return jsonify({"email": "该email已经被注册"})

我现在一条一条这么查,然后判断是否为空,是可以解决现有业务,但是感觉太LOW了,而且代码也太多了。肯定不对。。求助各位大神要怎么写

阅读 13.2k
4 个回答

from sqlalchemy import or_
filter(or_(User.email == 'ed', User.phone == '13911223344'))

models.py示例:

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True) 
    # unique=True 就是表示数据具有唯一性,不能重复,你将无法插入重复性的数据。
    email = db.Column(db.String(64), unique=True, index=True)

unique=True 这即可消除数据产生时的重复。

如果你能够把握好数据产生时的唯一性,那么在简单的应用中,可不考虑查询时数据的重复性。

@藕丝空间 所说,你完全可以利用数据库建立唯一索引,然后直接粗暴插入数据,如果一切正常,说明没有重复,如果有重复,数据库会返回比较明确的错误提示。
至于你希望知道具体是哪个参数重复,那就直接给所有你关注的参数建立索引,try...catch...即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题