sql >> Database >  >> RDS >> Mysql

Wat is de beste escape-tekenstrategie voor Python/MySQL-combo?

Hier is een voorbeeld:

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]])

Bijwerken

Hier is een kort commentaar:

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

Altijd een goed idee om te ontsnappen aan alles wat in een query past. In dit geval voegen we dynamisch een kolomnaam toe en daarom moet er een escapecode voor worden gebruikt voordat de query wordt uitgevoerd.

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

Ik vorm hier de vraag. Ik probeer twee dingen te bereiken:(1) vorm een ​​query met de kolomnaam ingevuld met behulp van de column variabele gedeclareerd in de vorige regel (2) voeg tijdelijke aanduidingen toe die tijdens de uitvoering van de query door feitelijke parameters worden ingevuld.

Het fragment dict(column = column) is eigenlijk een andere manier om het woordenboek {'column': column} . te maken . Dit wordt mogelijk gemaakt met behulp van het dictaat aannemer. Ik wil de andere tijdelijke aanduidingen nog niet invullen, dus ik ontsnap eraan met twee procenttekens (%% ).

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

Voer tot slot de query uit. Als u de query afdrukt voordat u deze uitvoert, ziet u de tekenreeks update myTable set column_name = %s where ID = %s .



  1. selecteer uit de ene tabel, voeg in een andere tabel in oracle sql-query

  2. MySQL-syntaxis en 'OF'-prestaties

  3. Hoe voorloopnullen van datums in Oracle te verwijderen

  4. Tabel (structuur) maken van bestaande tabel