Wie kann ich die Eingabe in eine MySQL-Datenbank in Python3 umgehen?

7

Wie kann ich die Eingabe in eine MySQL-Datenbank in Python3 umgehen? Ich benutze PyMySQL und funktioniert gut, aber wenn ich versuche, etwas wie:

%Vor%

Es funktioniert nicht, wenn die Zeichenfolge ' oder " hat. Ich habe es auch versucht:

%Vor%

Das Problem dabei ist, dass die Bibliothek (PyMySQL) die Formatierungssyntax für Python2.x, % , verwendet, die nicht mehr funktioniert. Ich fand auch diese mögliche Lösung

%Vor%

in ​​hier , aber ich weiß nicht, wo ich diesen Code hinzufügen soll. Das ist alles was ich habe:

%Vor%

Bearbeiten: Ich habe es gelöst! In PyMySQL ist der richtige Weg so:

%Vor%

Wo die text = conn.escape(request[1]) -Zeile ist, was dem Code entgeht. Habe es im PyMySQL-Code gefunden. Dort ist request[1] die Eingabe.

    
user1460016 06.07.2012, 13:40
quelle

3 Antworten

5

Gelöst. In PyMySQL ist der richtige Weg so:

%Vor%

Wo die text = conn.escape(request[1]) -Zeile ist, was dem Code entgeht. Habe es im PyMySQL-Code gefunden. Dort ist request[1] die Eingabe.

    
user1460016 07.07.2012, 12:47
quelle
15

Obwohl die "gelöste" Antwort funktioniert, ist es nicht die beste Vorgehensweise. Wenn Sie eine Bibliothek verwenden, die dem Python-DBI entspricht, sollten Sie Bind-Variablen verwenden, anstatt eine Zeichenfolge zu formatieren und sie zur Ausführung zu übergeben. Diese Methodik birgt Gefahren in sich.

Deshalb ist dies der richtige Weg:

%Vor%

Beachten Sie, dass dies keine Formatzeichenfolge ist, sondern eine Bindevariable, die an den ausgeführten Cursor übergeben wird.

Für Details: Python DBI PEP

    
rootsmith 29.10.2014 00:14
quelle
0

Bereit zur Verwendung der Hilfsfunktion

%Vor%

Anwendungsbeispiel

%Vor%

Referenz: Ссылка

def execute(self, query, args=None):

%Vor%     
stil 10.09.2017 23:35
quelle

Tags und Links