2017-12-29 34 views
-1

So verwende ich flask_mysqldb in einem Fläschchen (Python-Website)flask_mysqldb FROM Variablentabelle löschen

Ich versuche, eine Funktion zu schreiben, eine Zeile in einer Tabelle zu löschen. Es funktioniert perfekt, wenn ich den Tabellennamen fest codiere, aber was muss ich tun, um stattdessen eine Variable verwenden zu können?

@app.route('/delete/<string:table>/<string:id>', methods=['POST']) 
@is_logged_in 
def delete(table, id): 
    # Create Cursor 
    cur = mysql.connection.cursor() 

    # Execute 
    cur.execute("DELETE FROM %s WHERE id = %s", (table, id)) 

    mysql.connection.commit() 

    cur.close() 

    flash('%s deleted'(table), 'success') 

    return redirect(url_for('dashboard')) 
+0

Ihr Code-Schnipsel eine Variable für den Tabellennamen zu verwenden scheint. Erhalten Sie beim Ausführen der Löschfunktion einen Fehler? –

Antwort

0
cur.execute("DELETE FROM %s WHERE id = %s", (table, id)) 

sollte

sein
cur.execute("DELETE FROM %s WHERE id = %s" % (table, id)) 
+0

** Dies ist eine SQL-Injektion. ** Verwenden Sie keine String-Formatierung, verwenden Sie parametrisierte Abfragen. Da dies mit Tabellennamen nicht möglich ist, validieren Sie den Namen zuerst anhand einer Liste gültiger Werte. Siehe die Duplikate. – davidism