Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да актуализирам mysql с python, където полетата и записи са от речник?

Не искате да поставяте буквални стойности при използването на интерполация на низове - атаките с инжектиране на SQL не са добро нещо (tm) . Вместо това, вие използвате синтаксиса за място, подходящ за вашата база данни (мисля, че MySQL е „%s“).

Забележка:Използвам .format тук променете да използвате %, ако искате, но избягвайте всички %

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'

Ако приемем cur е DB курсор, правилният начин за изпълнение на заявката е:

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

Това работи, защото въпреки че подреждането на речника е на практика произволен ред, редът на ключовете/стойностите на dict ще бъде последователен, така че 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. dpkg:пакет за обработка на грешка mysql-server (проблеми със зависимостта)?

  2. Разлика между тези два подхода за свързване на маса?

  3. mysql, транспониране/завъртане на ред в колона, избор на променлива

  4. Mysql:изтриване на редове в две таблици с външни ключове

  5. При присъединяване, как да поставите префикс на всички имена на колони с таблицата, от която идва