Devi lasciare che la libreria MySQL gestisca i parametri per te; questo ha l'ulteriore vantaggio di consentire a MySQL di preparare la tua dichiarazione, rendendo anche più veloci gli inserimenti ripetuti:
cur = con.cursor()
sql_input = "INSERT INTO 963168MBV17A(Rev, Part, SN, Iterations, Date, Time, Upstream, Downstream, ResultList, Result, Report) VALUES('503', '100-120970-0031', '1594539', ?, ?, ?, ?, ?, 0, P, 0"
cur.execute(sql_input, (export_date, export_time, export_numtests, export_upstream, export_downstream))
Consulta le specifiche Python DB API 2.0
per (alcuni) maggiori dettagli sull'SQL parametrizzato. Gli esatti formati dei parametri supportati sono documentati per adattatore di database, quindi controlla anche quello. Il modulo MySQLdb, ad esempio, imita la sintassi di formattazione della stringa Python e utilizza %s
come segnaposto:
sql_input = "INSERT INTO 963168MBV17A(Rev, Part, SN, Iterations, Date, Time, Upstream, Downstream, ResultList, Result, Report) VALUES('503', '100-120970-0031', '1594539', %s, %s, %s, %s, %s, 0, P, 0"
Altre possibili opzioni di parametro sono i numeri (:1, :2
, ecc.), nomi (:foo, :bar
) o l'altra forma di formattazione di stringhe Python, specificatori di formato denominati:(%(foo)s, %(bar)s
).