Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como atualizar o mysql com python onde os campos e entradas são de um dicionário?


Você não quer colocar valores literais usando interpolação de string - ataques de injeção de SQL não são uma boa coisa (tm) . Em vez disso, você usa a sintaxe de espaço reservado relevante para seu banco de dados (acho que o MySQL é '%s').

Observação:estou usando .format aqui, mude para usar % se quiser, mas escape qualquer %'s
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'

Assumindo cur é um cursor de banco de dados a maneira correta de realizar a consulta é:
cur.execute(sql, d.values())

Isso funciona porque, embora a ordenação de um dicionário seja efetivamente uma ordem arbitrária, a ordem das chaves/valores de um dict será consistente de modo que dict(zip(d.keys(), d.values())) == d .