pypyodbc:OPENJSON关键字“WITH”附近的语法不正确

时间:2016-07-24 19:04:11

标签: python sql sql-server json pypyodbc

我正在尝试在Python脚本中使用OPENJSON将一些基本JSON导入SQL数据库。我最初尝试使用更复杂的JSON文件,但为了这篇文章简化了它。这就是我所拥有的:

sql_statement = "declare @json nvarchar(max) = '{\"name\":\"James\"}'; SELECT * FROM OPENJSON(@json) WITH (name nvarchar(20))" 
cursor.execute(sql_statement)
cursor.commit()
connection.close()

我收到的错误:

  

pypyodbc.ProgrammingError:(u'42000',u“[42000] [Microsoft] [ODBC SQL   服务器驱动程序] [SQL Server]关键字'with'附近的语法不正确。如果   此语句是一个公用表表达式,一个xmlnamespaces子句   或者更改跟踪上下文子句,前面的语句必须是   以分号结束。“)

我为什么看到这个错误的想法?我成功地使用相同的pypyodbc /数据库配置执行其他SQL查询。

1 个答案:

答案 0 :(得分:7)

问题可能是您的数据库在较旧的兼容级别中运行,其中OPEN JSON不可用。

要查找数据库的兼容级别,请运行以下SQL语句:

SELECT compatibility_level  FROM sys.databases WHERE name = 'your_db_name';

如果结果为120或更低,则您需要通过运行以下内容将兼容级别更新为130:

ALTER DATABASE your_db_name SET COMPATIBILITY_LEVEL = 130;

注意:如果您的数据库实际上是Azure SQL DB,您也应该检查版本,因为OPEN JSON不适用于12.x之前的版本