sql >> Database teknologi >  >> RDS >> Mysql

Hvad er den bedste flugtkarakterstrategi til Python/MySQL-kombination?

Her er et eksempel:

import MySQLdb
column = str(MySQLdb.escape_string(row[1]))
query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column) 
cursor2.execute(query, [row[3], row[0]])

Opdater

Her er en kort kommentar:

column = str(MySQLdb.escape_string(row[1]))

Det er altid en god idé at undslippe alt, der indgår i en forespørgsel. I dette tilfælde tilføjer vi dynamisk et kolonnenavn, og det skal derfor escapes, før forespørgslen udføres.

query = "update myTable set %(column)s = %%s where ID = %%s" % dict(column = column) 

Jeg danner forespørgslen her. Jeg forsøger at opnå to ting:(1) form en forespørgsel med kolonnenavn udfyldt ved hjælp af column variabel erklæret i den foregående linje (2) tilføjer pladsholdere, der vil blive udfyldt af faktiske parametre under udførelse af forespørgsel.

Uddraget dict(column = column) er faktisk en anden måde at oprette ordbogen {'column': column} på . Dette er gjort muligt ved hjælp af dict konstruktør. Jeg vil ikke udfylde de andre pladsholdere endnu, så jeg undslipper dem ved hjælp af to procenttegn (%% ).

cursor2.execute(query, [row[3], row[0]])

Udfør endelig forespørgslen. Hvis du udskriver forespørgslen før udførelse, vil du se strengen update myTable set column_name = %s where ID = %s .



  1. Opretter forbindelse til mysql i xampp uden adgangskode

  2. Svarer til unpivot() i PostgreSQL

  3. SQL:Hvor mellem to datoer uden år?

  4. Brug for en datetime-kolonne i SQL Server, der automatisk opdateres, når posten ændres