J'ai vu l'implémentation suivante en utilisant sqlalchemy. C'est une méthode qui ne fait une différence qu'entre la réduction à partir de la liste d'utilisateurs passée ou la réduction à partir de la table entière. (Les autres conditions sont exactement les mêmes) J'ai pensé qu'il serait préférable de le rendre commun lors de l'examen de la correction, alors j'ai étudié la solution.
def get_specified_age_users_from_user_list(user_name_list={}, age):
"""
Obtenir des utilisateurs d'un âge spécifique de la table User parmi les utilisateurs spécifiés
"""
users = session.query(User).\
filter(users.age==age).\
filter(users.name.in_(user_name_list)).\
all()
return users
def get_specified_age_users(age):
"""
Obtenir des utilisateurs d'un âge spécifique à partir du tableau des utilisateurs
"""
users = session.query(User).\
filter(users.age==age).\
all()
return users
Passez la condition au format tuple
à la méthode ʻand_`.
from sqlalchemy import and_
def get_specified_age_users(user_name_list={}, age):
filters = []
#Ajouter une condition uniquement si l'argument est passé
if user_name_list:
filters.append(User.name.in_(user_name_list))
# and_L'argument de est tuple car il doit être tuple
users = session.query(User).\
filter(and_(*filters)).\
all()
return users
#SQL à exécuter
##Si spécifié
SELECT omis
FROM users
WHERE users.name IN (%s)
##Si non spécifié
SELECT omis
FROM users
Recommended Posts