Musíte nechat knihovnu MySQL, aby za vás spravovala parametry; to má další výhodu v tom, že umožňuje MySQL připravit váš příkaz, takže opakované vkládání je také rychlejší:
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))
Viz specifikace Python DB API 2.0
pro (některé) další podrobnosti o parametrizovaném SQL. Přesné podporované formáty parametrů jsou zdokumentovány pro databázový adaptér, takže si to také zkontrolujte. Modul MySQLdb například napodobuje syntaxi formátování řetězce python a používá %s
jako zástupné symboly:
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"
Další možné možnosti parametrů jsou čísla (:1, :2
, atd.), jména (:foo, :bar
) nebo jiná forma formátování řetězce python, pojmenované specifikátory formátu:(%(foo)s, %(bar)s
).