2016-04-17 9 views
1

Wie kann ich mehr als einen Filter in einem SQL-SELECT hinzufügen? Ich würde drei verschiedene Filter/Parameter für eine SQL-SELECT benötigen. Zur Zeit habe ich ein und es sieht so aus:SQLite Python wie Sie mehrere Filter in SELECT hinzufügen

conn = sqlite3.connect(SerienPlaner) 
cur = conn.cursor() 
query = """SELECT %s 
     FROM TVShowData 
     WHERE julianday(_Starttime) + (_RunningTime/24.0/60.0) > julianday('now', 'localtime') 
     %s 
     ORDER BY _Starttime 
     LIMIT 15""" 
if category == __LS__(30116): 
    filter = "" 
    parameters =() 
else: 
    filter = " AND WatchType = ?" 
    parameters = (category,) 

query = query % (','.join(properties), filter) 
cur.execute(query, parameters) 

Ich möchte

if __series_in_db__: 
    filter = " AND inDB = ?" 
    parameters = (TRUE,) 
else: 
    filter = "" 
    parameters =() 

und

if __firstaired__: 
    filter = " AND neueEpisode = ?" 
    parameters = %NEU% 
else: 
    filter = "" 
    parameters =() 

__series_in_db__ und __firstaired__ sind GUI-Einstellungen im Skript hinzuzufügen .. . für __firstaired__ Ich möchte fatchall wo neueEpisode = NEU oder FREE-TV NEU ...

+0

Aus Wartung Perspektive Code, überdenken Sie hier Ihr Ansatz. Anstatt die SQL-Anweisung bedingt zu erstellen, erstellen Sie einfach ganze SQL-Strings basierend auf if/then/else-Bedingungen. – Parfait

+0

@Parfait Drei optionale Filter würden acht Fälle ergeben. Und alle Parameter * sind * Werte. –

Antwort

0

könnten Sie hängen Sie einfach die SQL/Parameter zum vorherigen:

filter = "" 
parameters = [] 
if ...: 
    filter += " AND xxx = ?" 
    parameters += [x] 
if ...: 
    filter += " AND yyy = ?" 
    parameters += [y]