sql >> Databáze >  >> RDS >> Mysql

Jak aktualizovat mysql pomocí pythonu, kde jsou pole a položky ze slovníku?

Nechcete do interpolace řetězců vkládat doslovné hodnoty – útoky SQL injection nejsou dobrá věc (tm) . Místo toho použijete syntaxi zástupného symbolu relevantní pro vaši databázi (myslím, že MySQL je '%s').

Poznámka:Používám .format zde změňte na použití %, chcete-li, ale vynechejte všechna %

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'

Za předpokladu cur je DB kurzor, správný způsob provedení dotazu je:

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

Funguje to proto, že ačkoliv je řazení slovníku ve skutečnosti libovolné, pořadí klíčů/hodnot diktátu bude konzistentní, takže dict(zip(d.keys(), d.values())) == d .



  1. Jak získat krátký název měsíce z data v MariaDB

  2. LibreOffice:'com.mysql.jdbc.driver' nelze načíst

  3. Maskování dat v DB aplikacích

  4. Jak mohu zadat nápovědu k indexu v Entity Framework?