2016-10-26 4 views
0

Ich habe eine Tabelle mit Feldern Name: String und ID_no: Integer, von einer externen Quelle Ich bekomme Liste von Namen und ID_no, muss ich die Datensätze mit dieser Kombination mit Peewee ORM abrufen.Abfrage in Python Peewee mit der Kombination von Feldern

zum Beispiel:

input = [ 
{'name':'name1', 'id_no': 1}, 
{'name':'name2', 'id_no': 2}, 
{'name':'name3', 'id_no': 3}, 
] 

Welche Abfrage kann ich schreiben, um Datensätze mit oben genannten Kombination von Daten zu holen?

ähnliche Abfrage in Mysql:

SELECT * FROM table_name 
WHERE CONCAT(convert(id_no, char), ':', name) IN ('1:name1','2:name2','3:name3') 

Antwort

1

schreibt ich würde es als:

import operator 

data = [ 
    {'name':'name1', 'id_no': 1}, 
    {'name':'name2', 'id_no': 2}, 
    {'name':'name3', 'id_no': 3}, 
] 
conditions = [ 
    ((MyModel.name == item['name']) & (MyModel.id_no == item['id_no'])) 
    for item in data] 
expr = reduce(operator.or_, conditions) 
query = MyModel.select().where(expr) 
Verwandte Themen