2016-07-24 58 views
2

我想在Python脚本中使用OPENJSON将一些基本的JSON导入SQL数据库。我最初尝试使用更复杂的JSON文件,但为了这篇文章而简化了它。下面是我有:pypyodbc:关键字“WITH”附近的OPENJSON语法不正确

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 Server Driver][SQL Server]Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.")

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

+1

非常重要因为“OPENJSON”是SQL Server特有的方法,所以不需要其他SQL引擎。此外,错误似乎很清楚。您没有正确使用'WITH()'子句(通常保留给主查询中由名称引用的'SELECT'语句)。事实上,在这里包含可能是多余的。除此之外 - 在Management Studio中测试查询。 – Parfait

回答

6

问题可能是您的数据库运行在较旧的兼容级别,其中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数据库,你应该检查版本,以及,开放JSON不适用于版本之前的12.x来标记DBMS

+1

这解决了我的问题。谢谢! – user1944673

相关问题