Python 从字典创建SQL查询
我有一个函数来更新数据库(MySQL)中的条目,它需要尽可能动态 该函数允许API用户传递记录的id,然后kwargs处理要更改的值(传递的值数量没有限制) 假设我从kwargs那里得到这本字典Python 从字典创建SQL查询,python,mysql,sql,dictionary,Python,Mysql,Sql,Dictionary,我有一个函数来更新数据库(MySQL)中的条目,它需要尽可能动态 该函数允许API用户传递记录的id,然后kwargs处理要更改的值(传递的值数量没有限制) 假设我从kwargs那里得到这本字典 {'hello':'world', 'foo':'bar'} 有没有一种方法可以在update语句中使用它 UPDATE myTable SET key_n = val_n, key_n+1 = val_n+1, ... WHERE id = the_id_passed_to_the_function
{'hello':'world', 'foo':'bar'}
有没有一种方法可以在update语句中使用它
UPDATE myTable
SET key_n = val_n, key_n+1 = val_n+1, ...
WHERE id = the_id_passed_to_the_function
提前感谢。试试这个:
def UpdateQuery(data,where):
if isinstance(data, dict) and where:
vals = ','.join(["%s=?" %(k) for k,v in data.iteritems()])
query = "update myTable set %s where id=?" % (vals)
res = cr.execute(query,where)
试试这个:
def UpdateQuery(data,where):
if isinstance(data, dict) and where:
vals = ','.join(["%s=?" %(k) for k,v in data.iteritems()])
query = "update myTable set %s where id=?" % (vals)
res = cr.execute(query,where)
那么:
foo = kwargs['bar']
id = 1
if foo:
k = foo.keys()
q = '''UPDATE myTable'''
q += ','.join('SET {0}=%s'.format(i) for i in k)
q += 'WHERE id = %s'
cur.execute(q,tuple(foo[i] for i in k)+(id,))
需要注意的几点:
foo = kwargs['bar']
id = 1
if foo:
k = foo.keys()
q = '''UPDATE myTable'''
q += ','.join('SET {0}=%s'.format(i) for i in k)
q += 'WHERE id = %s'
cur.execute(q,tuple(foo[i] for i in k)+(id,))
需要注意的几点: