Musisz pozwolić bibliotece MySQL na obsługę parametrów za Ciebie; ma to tę dodatkową zaletę, że pozwala MySQL na przygotowanie instrukcji, dzięki czemu wielokrotne wstawianie jest również szybsze:
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))
Zobacz specyfikacje Python DB API 2.0
aby uzyskać (niektóre) więcej szczegółów na temat sparametryzowanego SQL. Dokładne obsługiwane formaty parametrów są udokumentowane dla adaptera bazy danych, więc to również sprawdź. Na przykład moduł MySQLdb naśladuje składnię formatowania ciągu Pythona i używa %s
jako symbole zastępcze:
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"
Inne możliwe opcje parametrów to liczby (:1, :2
itp.), nazwy (:foo, :bar
) lub inną formę formatowania ciągu Pythona, nazwane specyfikatory formatu:(%(foo)s, %(bar)s
).