Dynamische SQL-WHERE-Klausel generation

Für die Aufnahme, ich bin mit Python und SQLlite. Ich habe eine funktionierende Funktion, generiert die SQL, die ich brauche, aber es 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

Werde ich wohl müssen, fügen Sie mehrere Spalten und Kriterien später auf.

Irgendwelche besseren Ideen?

Edit:
Was nicht gut aussieht ist, dass ich den Bau der SQL dynamisch aus Strings. Dies ist in der Regel nicht der beste Ansatz. SQL-Injektionen Angriffe, brauchen, um richtig zu escape-Zeichenfolgen. Ich kann nicht verwenden Sie Platzhalter, weil einige der Werte sind None und müssen nicht in der WHERE-Klausel-Bedingung.

InformationsquelleAutor Ayman | 2013-03-19
Schreibe einen Kommentar