Debe dejar que la biblioteca MySQL maneje los parámetros por usted; esto tiene el beneficio adicional de permitir que MySQL prepare su declaración, haciendo que las inserciones repetidas también sean más rápidas:
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))
Consulte las especificaciones de Python DB API 2.0
para (algunos) más detalles sobre SQL parametrizado. Los formatos de parámetros admitidos exactos están documentados por adaptador de base de datos, así que compruébelo también. El módulo MySQLdb, por ejemplo, imita la sintaxis de formato de cadena de python y usa %s
como marcadores de posición:
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"
Otras posibles opciones de parámetros son los números (:1, :2
, etc.), nombres (:foo, :bar
) o la otra forma de formato de cadena de python, especificadores de formato con nombre:(%(foo)s, %(bar)s
).