Heim > Datenbank > MySQL-Tutorial > Wie kann ich Python-Strings für SQL-LIKE-Abfragen mit Platzhaltern richtig formatieren?

Wie kann ich Python-Strings für SQL-LIKE-Abfragen mit Platzhaltern richtig formatieren?

Barbara Streisand
Freigeben: 2024-12-19 21:32:13
Original
465 Leute haben es durchsucht

How Can I Correctly Format Python Strings for SQL LIKE Queries with Wildcards?

Pythons String-Formatierung mit SQL-Wildcards und LIKE

Sind Sie auf Schwierigkeiten bei der Integration von SQL-Anweisungen mit Wildcards in Ihren Python-Code gestoßen? Dieser Artikel bietet eine Lösung für die häufigsten Herausforderungen beim Formatieren von Python-Strings für Abfragen mit dem Schlüsselwort LIKE und Platzhaltern.

Problem:

Verwendung des Schlüsselworts LIKE mit Platzhaltern in einer SQL-Anweisung mit MySQLdb in Python erweist sich als problematisch. Verschiedene Versuche, die Zeichenfolge mit der Formatierungsmethode von Python zu formatieren, führen zu Fehlern entweder bei der Wertvalidierung von Python oder bei der Abfrageausführung von MySQLdb.

Falsche Versuche:

# Attempt 1: Value error due to unsupported escape sequence
"SELECT tag.userId, count(user.id) as totalRows FROM user INNER JOIN\
  tag ON user.id = tag.userId WHERE user.username LIKE '%%s%'" % (query)

# Attempt 2: Returns same error as Attempt 1
"SELECT tag.userId, count(user.id) as totalRows FROM user INNER JOIN\
  tag ON user.id = tag.userId WHERE user.username LIKE '\%%s\%'" % (query)

# Attempt 3: Error from MySQLdb due to insufficient arguments in format string
like = "LIKE '%" + str(query) + "%'"
totalq = "SELECT tag.userId, count(user.id) as totalRows FROM user INNER JOIN\
  tag ON user.id = tag.userId WHERE user.username " + like

# Attempt 4: Returns same error as Attempt 3
like = "LIKE '\%" + str(query) + "\%'"
totalq = "SELECT tag.userId, count(user.id) as totalRows FROM user INNER JOIN\
  tag ON user.id = tag.userId WHERE user.username " + like
Nach dem Login kopieren

Lösung:

Um diese Formatierungsprobleme zu beheben und sicherzustellen, dass die SQL-Anweisung ausgeführt wird Verwenden Sie für die korrekte Ausführung den folgenden Ansatz:

curs.execute("""SELECT tag.userId, count(user.id) as totalRows 
                  FROM user 
            INNER JOIN tag ON user.id = tag.userId 
                 WHERE user.username LIKE %s""", ('%' + query + '%',))
Nach dem Login kopieren

In diesem Beispiel werden zwei Argumente an die Methodeexecute() übergeben. Das erste Argument ist eine formatierte SQL-Zeichenfolge mit einem Platzhalter für den Platzhalterausdruck. Das zweite Argument ist ein Tupel, das den Platzhalterausdruck enthält, dem ein Prozentzeichen vorangestellt und angehängt ist. Dadurch wird sichergestellt, dass der Platzhalter an beiden Enden der Suchzeichenfolge angewendet wird.

Durch die Verwendung dieser Methode eliminieren Sie das Risiko von SQL-Injection-Angriffen und stellen sicher, dass die Abfrage ohne Formatierungsfehler ausgeführt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich Python-Strings für SQL-LIKE-Abfragen mit Platzhaltern richtig formatieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage