2017-03-04 2 views
0

Ich habe eine Datenbanktabelle Students und ich möchte einen Datensatz mit SQL löschen. Hier ist mein Code:Wie kann ich einen Datensatz mit MySQL in Python löschen?

uid = int(input("Please enter students ID: ")) 
c.execute("DELETE FROM Students WHERE ID = (uid) ") 

I eingeben möchten die ID Variable (uid) in die c.execute

Vielen Dank im Voraus.

+1

Ich denke, Sie suchen: 'c.execute (" DELETE FROM Studenten WHERE ID = {} ".format (uid))' – JustRufus

+0

@JustRufus Beachten Sie, dass dieses Beispiel ausgesetzt ist zur SQL-Injektion. – DeepSpace

+0

Es ist nicht, wie es int ... Sie können keinen Code mit int injizieren. –

Antwort

0

Grundsätzlich ist die Syntax:

"some string: %s, some int: %i, some double: %d" % (string_var,int_var,double_var) 

so:

uid = int(input("Please enter students ID: ")) 
c.execute("DELETE FROM Students WHERE ID = %i" % (uid)) 
+1

Dieser Code wird SQL-Injektion ausgesetzt. OP sollte eine parametrisierte Abfrage verwenden. – DeepSpace

+0

Nicht wirklich ... es ist int ... nicht verwundbar. –

+0

Und morgen wird OP versuchen, eine Zeichenfolge in der gleichen Weise zu verwenden. – DeepSpace

3

Sie nicht String-Interpolation, wie empfohlen in der anderen Antwort verwenden müssen; Während es in diesem speziellen Fall in Ordnung sein könnte, ist es im Allgemeinen unsicher, da es Sie für die SQL-Injektion öffnet. Verwenden Sie stattdessen die Unterstützung für Parameter in der execute Methode:

uid = int(input("Please enter students ID: ")) 
c.execute("DELETE FROM Students WHERE ID = %s", (uid,)) 
1

Was sagte Daniel Roseman sollte die richtige Antwort sein.

Sie können die ID als Parameter für die .execute-Methode einfügen. Es gibt eine Antwort zu diesem Thema here

Verwandte Themen