sql >> Databáze >  >> RDS >> Mysql

Jaká je nejlepší strategie únikových postav pro kombinaci Python/MySQL?

Zde je příklad:

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

Aktualizovat

Zde je krátký komentář:

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

Vždy je dobré uniknout všemu, co se dostane do dotazu. V tomto případě dynamicky přidáváme název sloupce, a proto musí být před provedením dotazu escapován.

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

Dotaz tvořím zde. Snažím se dosáhnout dvou věcí:(1) vytvořte dotaz s názvem sloupce vyplněným pomocí column proměnná deklarovaná v předchozím řádku (2) přidejte zástupné symboly, které budou vyplněny skutečnými parametry během provádění dotazu.

Úryvek dict(column = column) je vlastně další způsob, jak vytvořit slovník {'column': column} . To je možné pomocí diktátu konstruktér. Nechci zatím vyplňovat ostatní zástupné symboly, takže je vynechám pomocí dvou znaků procenta (%% ).

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

Nakonec proveďte dotaz. Pokud dotaz vytisknete před provedením, uvidíte řetězec update myTable set column_name = %s where ID = %s .



  1. Co je uložená procedura?

  2. Co je to Multi Dimension OLAP CUBE a uveďte příklad krychle s více než 3 rozměry

  3. Vytvoření aplikace Django Movie Recommendation pomocí Jaccard Index

  4. ORA-01036:neplatný název/číslo proměnné při spuštění dotazu přes C#