我希望能够在给定列列表和数据列表列表的情况下更新多个 SQLite 数据库行。我有一个可行的解决方案,但它一点也不优雅。我怎样才能更有效地做到这一点。我省略了实际的 UPDATE
语句,因为我只专注于构建查询。
def update(columns, values):
for value in values:
print ("Update myTable SET " + " ".join([x + ' = "%s",' for x in columns]) + ' WHERE SSN = "%s"').replace(", WHERE", " WHERE") % (tuple(value))
columns = ['Name', 'Age']
values = [['Jon', 12, '545-45-7987'], ['Sam', 13, '454-78-4545']]
update(columns, values)
最佳答案
您不应该为您的UPDATE
插入值;相反,您应该使用占位符和查询参数。这将避免引用复杂性和潜在的 SQL 注入(inject)漏洞。类似于:
def update(cursor, columns, values):
for value in values:
sql = "UPDATE myTable SET {} WHERE ssn = ?".format(
", ".join(map("{} = ?".format, columns)))
print(sql)
cursor.execute(sql, values)
columns = ['Name', 'Age']
values = [['Jon', 12, '545-45-7987'], ['Sam', 13, '454-78-4545']]
cursor = conn.cursor()
update(cursor, columns, values)
关于python - 更新多个 SQLite 行给定的列和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899565/