Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Unikanie cytatów dla MySQL w pythonie

Nie użyj formatowania ciągów do interpolacji wartości SQL. Użyj parametrów SQL:

SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))

Tutaj %s są parametrami SQL; baza danych zajmie się następnie ucieknięciem wartości (przekazywanych jako drugi argument do `cursor.execute) za ciebie.

Dokładna składnia, której należy użyć, zależy od adaptera bazy danych; niektórzy używają %s , inni używają ? dla symboli zastępczych.

Nie można inaczej używać kontenerów Pythona, takich jak lista, dla tych parametrów. Musiałbyś najpierw serializować to do formatu ciągu; możesz użyć do tego JSON, ale wtedy będziesz musiał również pamiętać, aby ponownie zdekodować JSON na ciąg Pythona, gdy wysyłasz zapytanie do bazy danych. To właśnie próbowały przekazać odpowiedzi na inne pytanie.

Na przykład, jeśli var4 to lista, której możesz użyć:

cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę uzyskać pełną listę wszystkich zapytań aktualnie uruchomionych na moim serwerze MySQL?

  2. Dlaczego MySQL zwraca te same wyniki podczas używania RAND() w instrukcji SELECT?

  3. Aktualizacja danych MySQL na żywo

  4. Powiąż 3 tabele w 2 różnych przypadkach w MySQL

  5. Przechowywanie obrazów w systemie plików jako pliki lub w polu bazy danych BLOB jako pliki binarne