Dynamische SQL-WHERE-Klauselgenerierung

Für die Aufzeichnung verwende ich Python und SQLlite. Ich habe eine funktionierende Funktion, die die SQL generiert, die ich brauche, aber sie scheint nicht richtig zu sein.

def daily(self, host=None, day=None):
    sql = "SELECT * FROM daily WHERE 1"
    if host:
        sql += " AND host = '%s'" % (host,)
    if day:
        sql += " AND day = '%s'" % (day,)
    return sql

Ich werde wahrscheinlich später mehrere Spalten und Kriterien hinzufügen müssen.

Irgendwelche besseren Ideen?

Bearbeiten: Was nicht richtig aussieht, ist, dass ich die SQL dynamisch aus Strings konstruiere. Dies ist im Allgemeinen nicht der beste Ansatz. SQL Injection Attacs, müssen Strings richtig entkommen. Ich kann keine Platzhalter verwenden, da einige der Werte None sind und sich nicht in der WHERE-Klausel befinden müssen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage