0
Ich versuche, meine Flasche-Sqlalchemy Abfrage über Strings zu filtern. Mein Verfahren zum Erstellen der Zeichenfolge ergibt folgende Array:Kolben-Sqlalchemy-Filter mit Text-Array
["user.name == 'Sid'", "user.role == 'admin'"]
Es ist mit so etwas wie dieses gebildet wird:
for i in myarray:
filter_string = "%s.%s == '%s'" % (self.model.__tablename__, i[0], i[2])
or_filters.append(filter_string)
Hier ist, wie ich verwende es:
db = SQLAlchemy(app)
...
class myclass:
def __init(self, model):
self.model = model
self.q = db.session.query(self.model)
def get(self, cfg):
...
# the following line works
myfilter = [User.name == 'Sid', User.role == 'admin']
# the following line does not work, but I need it to. How to modify into the line above?
myfilter = ["user.name == 'Sid'", "user.role == 'admin'"]
if myfilter is not None:
self.q = self.apply_filter(myfilter)
items = self.q.all()
return items
def apply_filter(self, ftr):
self.q.filter(or_(*ftr))
Mögliche duplic ate of [Wie gebe ich den Spaltennamen dynamisch aus der String-Variablen in sql alchemy filter ein?] (https://stackoverflow.com/questions/10251724/how-to-give-column-name-dynamically-from-string-variable-in -sql-alchemy-filter) –
Dies ist ein [XY Problem] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Sie haben das Modell und Sie haben den gewünschten Attributnamen. Verwenden Sie 'or_filters.append (getattr (self.model, i [0]) == i [2])'. –