gpt4 book ai didi

python - 使用 Python 将 JSON 数据插入 SQL Server

转载 作者:行者123 更新时间:2023-12-01 05:16:22 28 4
gpt4 key购买 nike

我有一个 python 脚本,它调用 API、提交请求,然后将结果插入到 Sql Server 2012 表中。当它执行 SQL 插入时,它就中断了。我目前正在将 json、requests 和 pyodbc 导入到文件中。这是它损坏的位置:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER={localServer};DATABASE={localDB}')
cursor = conn.cursor()
for record in response:
print(json.dumps(record))
cursor.execute("Insert Into Ticket_Info values ?", json.dumps(record))
cursor.commit()
cursor.close()
conn.close()

它发生在cursor.execute()行。这是我尝试运行此程序时遇到的错误。

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '@P1'. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)"

如果我能得到任何帮助,我将不胜感激。此时我已经搜索并尝试了几种不同的方法,唯一改变的是错误。

最佳答案

cursor.execute() 的第二个参数必须是要插入的值的序列,一个对应于语句中的每个 SQL 参数。

您为 ODBC 提供了一个字符串,它也是一个序列,但其中包含的元素(字符)多于您的查询所需的元素(字符)。

此处使用单元素元组:

cursor.execute("Insert Into Ticket_Info values (?)", (json.dumps(record),))

我还在值部分加上了括号,按照SQL Server INSERT syntax :

VALUES
Introduces the list or lists of data values to be inserted. There must be one data value for each column in column_list, if specified, or in the table. The value list must be enclosed in parentheses.

除非Ticket_Info每行只有列(不太可能,您至少有一个主键列),您可能需要指定要将值插入到哪一列:

cursor.execute("Insert Into Ticket_Info (<columnname>) values (?)", (json.dumps(record),))

需要替换<columnname>的地方与表中的实际列名称。

关于python - 使用 Python 将 JSON 数据插入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23139470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com