sql >> Database >  >> RDS >> Mysql

Lijst in mijn database invoegen met Python

Het antwoord op je oorspronkelijke vraag is:Nee, je kunt zo'n lijst niet invoegen.

Met wat aanpassingen zou je die code echter kunnen laten werken door %r . te gebruiken en passeren in een tupel:

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

Helaas maakt die stijl van variabele invoeging uw code kwetsbaar voor SQL-injectie-aanvallen .

In plaats daarvan raden we aan om Python's DB API te gebruiken en het bouwen van een aangepaste queryreeks met meerdere vraagtekens voor de in te voegen gegevens:

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)

Het voorbeeld aan het begin van de SQLite3-documenten laat zien hoe u argumenten doorgeeft met behulp van de vraagtekens en het legt uit waarom ze nodig zijn (in wezen zorgt het voor correcte citaten van uw variabelen).



  1. Waarom verbreken Hibernate/JDBC/MySQL verbindingen na een dag of zo?

  2. (My)SQL volledige join met drie tabellen

  3. mySQL-query:hoe invoegen met UNION?

  4. MySQL Workbench:hoe de verbinding levend te houden