2024-03-29 08:21:09 发布
网友
我有一个烧瓶项目,它通过Flask-SQLAlchemy与MySQLdb交互。
Flask-SQLAlchemy
MySQL
我的问题是,如何根据一个值或另一个值从数据库中选择一行。
SELECT id FROM users WHERE email=email OR name=name;
如何在Flask-SQLAlchemy中实现这一点?
我今天也需要这个案子,我找到了一个很好的答案here:
因此,我们可以将或逻辑设为如下示例:
from sqlalchemy import or_ db.session.query(User).filter(or_(User.email=='useremail@example.com', User.name="username")).first()
以下可能有帮助:
# app.py from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'url_or_path/to/database' db = SQLAlchemy(app) class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(50), unique=True) name = db.Column(db.String(30)) def __init__(self, name=None, email=None): if not name: raise ValueError('\'name\' cannot be None') if not email: raise ValueError('\'email\' cannot be None') self.name = name self.email = email class UserQuery(object): @staticmethod def get_user_id_by_email_or_name(email=None, name=None): user = User.query.filter((User.email == email) | (User.name == name)).first() return user.id if hasattr(user, 'id') else None
“|”可以在筛选器中使用,而不是“或”。见Using OR in SQLAlchemy。
你可以这样使用:
>>> from app import db, User, UserQuery >>> db.create_all() >>> user = User(name='stan', email='stan@email.com') >>> db.session.add(user) >>> db.session.commit() >>> by_name_id = UserQuery.get_user_id_by_email_or_name(name='stan') >>> by_email_id = UserQuery.get_user_id_by_email_or_name(email='stan@email.com') >>> by_name_id == by_email_id True
我今天也需要这个案子,我找到了一个很好的答案here:
因此,我们可以将或逻辑设为如下示例:
以下可能有帮助:
“|”可以在筛选器中使用,而不是“或”。见Using OR in SQLAlchemy。
你可以这样使用:
相关问题 更多 >
编程相关推荐