>> cursor.execute('CREATE TABL-6ren">
gpt4 book ai didi

python - 从选择结果创建表失败,错误 292 "wrong number of arguments: "

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:59 25 4
gpt4 key购买 nike

使用官方的、半不受支持的 hdbcli Python 模块连接到 SAP HANA。

我正在尝试从一个子查询创建一个表,它有一些占位符:

>>> 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

如果我更改内部 SELECT 以返回常量而不是使用占位符,它也可以工作:

>>> 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 Studio 进行了同样的尝试。它也失败了。所以这不是特定于 Python 的。恕我直言,如果您在 SAP community network 中提出这个问题,您将有更好的机会获得答案。因为这里有专家。

关于python - 从选择结果创建表失败,错误 292 "wrong number of arguments: ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21436834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com