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

Vložit seznam do mé databáze pomocí Pythonu

Odpověď na vaši původní otázku je:Ne, takový seznam nemůžete vložit.

S určitými úpravami však můžete tento kód zprovoznit pomocí %r a předávání v n-tici:

variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)

Bohužel tento styl vkládání proměnných ponechává váš kód zranitelný vůči útokům SQL injection .

Místo toho doporučujeme použít Python's DB API a vytvoření přizpůsobeného řetězce dotazu s více otazníky pro data, která mají být vložena:

variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1,variable_2]
var_string = ', '.join('?' * len(varlist))
query_string = 'INSERT INTO table VALUES (%s);' % var_string
cursor.execute(query_string, varlist)

Příklad na začátku dokumentů SQLite3 ukazuje, jak předávat argumenty pomocí otazníků, a vysvětluje, proč jsou nutné (v podstatě zajišťuje správné citování vašich proměnných).



  1. Řetězec k datu v Oracle s milisekundami

  2. Vytváření částečného jedinečného indexu pomocí sqlalchemy na Postgres

  3. Parametr Sniffing (nebo Spoofing) v SQL Server

  4. MySQL SELECT x FROM a WHERE NOT IN ( SELECT x FROM b ) – Neočekávaný výsledek