2
使用官方半支持hdbcli
Python模塊連接到SAP HANA。從選擇結果創建表失敗,錯誤292「參數的錯誤數量:」
我試圖從一個子查詢,其中有一些佔位符創建一個表:
>>> cursor.execute('CREATE TABLE temporary_table AS (SELECT ? AS a FROM DUMMY) WITH DATA', [1])
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/some-masked-path-here/hdbcli/dbapi.py", line 369, in execute
ret = self.__execute(operation, tuple(parameters))
File "/some-masked-path-here/hdbcli/dbapi.py", line 244, in __execute
ret = self.__cursor.execute(operation, parameters=parameters, iscall=iscall)
Error: (292, 'wrong number of arguments: ')
(在我的實際情況下,我想創建一個臨時表,但是這並不改變結果)
如果我從子查詢,而不是一個CREATE TABLE
改變我的查詢,以一個簡單的選擇,它工作正常:
>>> cursor.execute('SELECT * FROM (SELECT ? AS a FROM DUMMY) AS sub', [1])
True
,如果我改變我的內012它也適用返回,而不是使用的佔位符恆:
>>> cursor.execute('CREATE TABLE temporary_table AS (SELECT 1 AS a FROM DUMMY) WITH DATA', [])
True
更新:我已經通過pyodbc
官方支持的ODBC驅動程序測試此爲好,和一個非常類似的問題表現:
>>> cursor.execute('CREATE TABLE temporary_table AS (SELECT ? AS a FROM DUMMY) WITH DATA', [1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')
而一個簡單的子查詢仍然可以通過ODBC的作品,以及:
>>> cursor.execute('SELECT * FROM (SELECT ? AS a FROM DUMMY) AS sub', [1])
<pyodbc.Cursor object at 0xb70f0b80>
我在這裏不知所措;我嘗試了所有我能想到的,但仍然無法弄清楚爲什麼CREATE TABLE
查詢無法使用佔位符。任何幫助弄清楚這個爛攤子將不勝感激!
我已經在那裏問過;似乎是HANA中的一個錯誤,因爲我得到的所有建議都是通過發佈單獨的「CREATE TABLE」和「INSERT ... SELECT」語句來實現的。 – lanzz