一尘不染

将Python字典用于SQL INSERT语句

mysql

我正在尝试使用dict做SQL INSERT。逻辑基本上是:

INSERT INTO table (dict.keys()) VALUES dict.values()

但是,我很难确定要执行此操作的正确语法/流程。这是我目前拥有的:

# data = {...}
sorted_column_headers_list = []
sorted_column_values_list = []
for k, v in data.items():
    sorted_column_headers_list.append(k)
    sorted_column_values_list.append(v)
sorted_column_headers_string = ', '.join(sorted_column_headers_list)
sorted_column_values_string = ', '.join(sorted_column_values_list)

cursor.execute("""INSERT INTO title (%s) 
            VALUES (%s)""", 
            (sorted_column_headers_string, sorted_column_values_string))

由此我得到一个SQL异常(我认为与逗号包含在我所拥有的某些值中有关)。做上述事情的正确方法是什么?


阅读 391

收藏
2020-05-17

共1个答案

一尘不染

您要向查询添加参数占位符。这可能会为您提供所需的东西:

qmarks = ', '.join('?' * len(myDict))
qry = "Insert Into Table (%s) Values (%s)" % (qmarks, qmarks)
cursor.execute(qry, myDict.keys() + myDict.values())
2020-05-17