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

Jak zaktualizować mysql za pomocą Pythona, gdzie pola i wpisy pochodzą ze słownika?

Nie chcesz wprowadzać wartości dosłownych przy użyciu interpolacji ciągów — ataki typu SQL injection nie są dobrą rzeczą(tm) . Zamiast tego użyj składni zastępczej odpowiedniej dla Twojej bazy danych (myślę, że MySQL to '%s').

Uwaga:używam pliku .format tutaj zmień, aby użyć %, jeśli chcesz, ale pomiń wszystkie %

d = {'col1': 'val1', 'col2': 'val2'}
sql = 'UPDATE table SET {}'.format(', '.join('{}=%s'.format(k) for k in d))
print sql
# 'UPDATE table SET col2=%s, col1=%s'

Zakładając, że cur jest kursorem bazy danych, prawidłowym sposobem wykonania zapytania jest:

cur.execute(sql, d.values())

Działa to, ponieważ chociaż kolejność słownika jest w rzeczywistości arbitralna, kolejność kluczy/wartości dyktatu będzie spójna, tak że dict(zip(d.keys(), d.values())) == d .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie mogę uruchomić aktualizacji pakietu z powodu mysql2 gem

  2. Jaka jest różnica między SERIAL a AUTO_INCREMENT w mysql

  3. jak skopiować schemat w mysql za pomocą java

  4. Nie udało się odczytać wartości automatycznego przyrostu z silnika pamięci masowej, numer błędu:1467

  5. mysql przenieś wiersz między tabelami