python 使用pyodbc将JSON导入SQL-Database时出错

b5lpy0ml  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(108)

我正在尝试使用Python和pyodbc将json-data从API导入到SQL数据库。
JSON数据示例

"id": "unique id string",
 "created_at": "NULL",
 "creator_id": "creator_id",
 "updated_at": "NULL",
 "updater_id": "updater_id",
 "name": "Name",

SQL-Table SQL-Table
Insert-function(SQL Connection工作正常,我确信这一点):

data_string = json.dumps(data, indent=4)
self.cursor.execute("INSERT INTO SQLTable VALUES (?)", data_string)

我得到的错误:

pyodbc.Error: ('21S01', '[21S01] [Microsoft][ODBC SQL Server Driver][SQL Server]Column name or number of supplied values does not match table definition. 
(213) (SQLExecDirectW); [21S01] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)')

我知道有一种方法可以用过程来做到这一点,但我想避免使用过程,除非它实际上是逻辑上更好的解决方案。
首先,我认为这是由于错误的时间格式,所以我现在用NULL替换它们。

ohfgkhjo

ohfgkhjo1#

SQL Server不会自动为您“Map”列。您需要使用OPENJSONJSON_VALUE来获取数据。

INSERT INTO SQLTable
  (id, created_at, creator_id, updated_at, updater_id, name)
SELECT
FROM OPENJSON(?)
  WITH (
    id uniqueidentifier,
    created_at datetime,
    creator_id varchar(30),
    updated_at datetime,
    updater_id varchar(30),
    name varchar(100)
  ) AS j;

或者,您可以在Python中读取值并通过单独的参数传递。

相关问题