pyodbc.DataError:('22003','[22003][Oracle][ODBC]数值超出范围。(0)(SQLGet Data)')具有长字段类型

2024-10-01 04:45:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我是pyodbc的新手,我搜索了很多东西,但没有找到我想要的答案。我有一段用python编写的代码需要调试。我不能用另一个模块代替pyodbc。我的问题是: 我从这样的表中获取列:

col_list = self.connection.cursor().columns(table=tabspec["name"], schema=tabspec["schema"])

然后在它们上循环以获得每个列的名称:

^{pr2}$

问题是,在表中,有一个列的类型是LONG(),在该列中,我有以下错误:

    pyodbc.DataError: ('22003', '[22003] [Oracle][ODBC]Numeric value out of range. (0) (SQLGetData)')  

我无法更改数据库,因此必须在python代码中找到解决方案。有人能帮忙吗?在

提前谢谢。在


Tags: 模块columns答案代码nameselfschematable
1条回答
网友
1楼 · 发布于 2024-10-01 04:45:52

对我来说,它似乎是pyodbc中的bug。我可以通过运行以下命令在Oracle数据库中复制:

db = pyodbc.connect('DSN=test;PWD=passwd')
c = db.cursor()
col_list = c.columns(table="PLAN_TABLE")
for col in col_list:
    print(col)

我检查了PLAN_TABLE是否有一个LONG类型的列。在

我使用的其他库:odbccx_Oracle没有columns()方法,因此无法使用它们。在

我认为你可以填写缺陷报告并找到解决办法。要找到解决方法,您必须告诉我们您要做什么:报表架构、交换数据等。也许您可以使用其他库,如cx_Oracle,或者您可以使用其他pyodbc方法来查找请求的信息。在

如果只需要选定表的列名,则可以查询Oracle元数据:

^{pr2}$

有关更多元数据信息,如类型、大小、默认值等,请参阅我的创建Oracle数据库报告的工具:http://code.activestate.com/recipes/576534-dump-oracle-db-schema-to-text/

相关问题 更多 >