Mam listę list, np. [['a','b'],['c','d']]
.Jak używać Pythona mysqldb do wstawiania wielu wierszy jednocześnie?
Mam tabelę o nazwie T
i dwa pola F1
, F2
. Pierwszy element na liście pól jest mapowany na F1
, drugi pod F2
.
Jak mogę wstawić wiersze dla każdej listy wewnętrznej za pomocą pojedynczego polecenia lub wywołania, zamiast używać pętli for?
for i in [['a','b'],['c','d']]:
c.execute("insert into T (F1,F2) values (%s, %s)", (i[0], i[1]))
Czy jest to bardziej wydajne niż użycie kompilacji mySQL przy manipulowaniu ciągami znaków? Aby twój ciąg znaków był "wstawiany do wartości T (F1, F2) (a, b), (c, d)" i przekazywać go do wykonania? – Jochen
@Jochen Naprawdę nie chcesz tego robić, chyba że jesteś całkowicie pewny, że twoje dane pochodzą z zaufanego źródła (i nadal uważam, że "nigdy nie ufaj klientowi" to dobra zasada, aby zachować w każdych okolicznościach). Zasadniczo jest o wiele lepiej, przynajmniej gdy pracujesz z dojrzałą biblioteką, taką jak MySQLdb, aby pozostawić konieczne cytowanie/kodowanie/ucieczkę do biblioteki, zamiast próbować samemu; nawet jeśli wiąże się to z pewnym obciążeniem, spokój jest tego wart. – kungphu
Niestety, to nie działa z zestawem znaków utf8mb4. Rzuca dziwny błąd "nieznane kodowanie: utf8mb4" –