J'ai un problème pour insérer une liste dans une base de données mysql avec le pilote MySQLdb.Insérer une liste dans la base de données MySQLdb Python3.6
import MySQLdb
db = MySQLdb.connect("localhost", "user", "password", "db")
c = db.cursor()
cities = ["New York", "NY", 8400000]
sql = "INSERT INTO projecten.population(city, state, population) VALUES(?, ?, ?)", cities
try:
c.execute(sql)
db.commit()
except MySQLdb.OperationalError:
print("error")
finally:
db.close()
C'est l'erreur
TypeError: a bytes-like object is required, not 'tuple'
Mais en utilisant% n'est pas en sécurité avec les injections SQL –
point valide. Pouvez-vous essayer cur.execute ("INSERT INTO projecten.population (ville, état, population) VALEURS (% s,% s,% s)", (villes,)) Refer - http: //mysql-python.sourceforge. net/MySQLdb.html # some-examples – Rishi
Vous ne pouvez utiliser (villes,) que lorsque la variable contient une valeur. Si la variable contient plus d'une valeur, vous utilisez (villes). –