上下文:Hive3,HDP 3.1。在Windows和Linux下使用Python / odbc(官方HDP驱动程序)进行的测试。
我运行了以下查询:
1)和2)工作正常,并给了我预期的结果。 3给我一个ParseException:
编译语句时出错:失败:ParseException行1:21 无法识别“?”附近的输入select子句(80)中的'as''lic' (SQLPrepare)“)
使用java / jdbc运行的语句完全相同。请注意,2)似乎是3)的一种解决方法,但它适用于这个小例子,不适用于较大的查询。
我可以做些什么使ODBC正常工作吗?另外,在哪里可以找到ODBC驱动程序的限制?
对于完整的上下文,完整的测试代码如下:
cnxnstr = 'DSN=HiveProd'
cnxn = pyodbc.connect(cnxnstr, autocommit=True)
cursor = cnxn.cursor()
queries = [
"with init as (select ? as lic, ? as cpg) select * from init",
"select 2 * ? as lic, ? as cpg",
"select * from (select ? as lic, ? as cpg) as t",
]
for q in queries:
print("\nExecuting " + q)
try:
cursor.execute(q, '1', '2')
except pyodbc.ProgrammingError as e:
print(e)
continue
答案 0 :(得分:0)
如果在odbc驱动程序中启用了日志记录,则可以发现真正的问题(并且有很多问题)。