Ich habe die folgende Implementierung mit sqlalchemy gesehen. Es ist eine Methode, die nur einen Unterschied zwischen der Eingrenzung von der Liste der übergebenen Benutzer oder der Eingrenzung von der gesamten Tabelle macht. (Andere Bedingungen sind genau die gleichen) Ich dachte, dass es besser wäre, es allgemein zu machen, wenn ich über die Korrektur nachdenke, also untersuchte ich die Lösung.
def get_specified_age_users_from_user_list(user_name_list={}, age):
"""
Rufen Sie Benutzer eines bestimmten Alters aus der Benutzertabelle unter den angegebenen Benutzern ab
"""
users = session.query(User).\
filter(users.age==age).\
filter(users.name.in_(user_name_list)).\
all()
return users
def get_specified_age_users(age):
"""
Rufen Sie Benutzer eines bestimmten Alters aus der Benutzertabelle ab
"""
users = session.query(User).\
filter(users.age==age).\
all()
return users
Übergeben Sie die Bedingung im Tupelformat an die Methode and and.
from sqlalchemy import and_
def get_specified_age_users(user_name_list={}, age):
filters = []
#Bedingung nur hinzufügen, wenn Argument übergeben wird
if user_name_list:
filters.append(User.name.in_(user_name_list))
# and_Das Argument von ist Tupel, weil es Tupel sein muss
users = session.query(User).\
filter(and_(*filters)).\
all()
return users
#SQL ausgeführt werden
##Wenn angegeben
SELECT weggelassen
FROM users
WHERE users.name IN (%s)
##Wenn nicht angegeben
SELECT weggelassen
FROM users
Recommended Posts