sql >> Databasteknik >  >> RDS >> Mysql

Hur uppdaterar man mysql med python där fält och poster kommer från en ordbok?

Du vill inte sätta bokstavliga värden i att använda stränginterpolation - SQL-injektionsattacker är inte bra(tm) . Istället använder du platshållarsyntaxen som är relevant för din databas (jag tror att MySQL är '%s').

Obs! Jag använder .format Ändra här till att använda % om du vill, men undvik eventuella %

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'

Om du antar cur är en DB-markör är det korrekta sättet att utföra frågan:

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

Detta fungerar eftersom även om ordningen av en ordbok faktiskt är godtycklig ordning, kommer ordningen på nycklar/värden för ett dict att vara konsekvent så att dict(zip(d.keys(), d.values())) == d .



  1. Hur trunkerar man en tabell med Lära 2?

  2. FieldShield SDK

  3. hur man prefix en sträng före sekvens genererad av postgresql?

  4. Hibernate OnDelete Cascade fungerar inte för MySql men fungerar på postgres och Ms-Sql