반응형
Flask-SQLAlchemy
를 통해 MySQL
db와 상호 작용하는 Flask 프로젝트가 있습니다.
내 질문은 값 또는 다른 값을 기반으로 데이터베이스에서 행을 선택하는 방법입니다.
SELECT id FROM users WHERE email=email OR name=name;
Flask-SQLAlchemy
에서이를 달성하는 방법은 무엇입니까?
해결 방법
다음이 도움이 될 수 있습니다.
# 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
다음과 같이 사용할 수 있습니다.
>>> 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
참조 페이지 https://stackoverflow.com/questions/40535547
반응형
'MySql' 카테고리의 다른 글
MySQL mysql (5.6) 데이터베이스에 json 배열을 저장할 데이터 유형 (0) | 2020.10.31 |
---|---|
MySQL 연결 풀링 질문 : 그만한 가치가 있습니까? (0) | 2020.10.31 |
MySQL SQL-필드 목록의 열이 모호합니다. (0) | 2020.10.31 |
MySQL mysql show processlist는 많은 프로세스를 나열합니다. sleep 및 info = null? (0) | 2020.10.31 |
MySQL 'SQLSTATE [HY000] [2002] 메시지가있는'PDOException '호스트에 대한 경로가 없습니다. (0) | 2020.10.31 |
댓글