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.