首页 > 解决方案 > 需要帮助了解 teradata 中的错误

问题描述

出于某种原因运行此查询时,我总是得到无效的行句柄错误,我不确定这意味着什么。我正在尝试与 teradata 建立 python 连接并打印出查询数据的结果。

import teradata
import teradatasql

with teradatasql.connect(host='PPTT', user='**', password='***', logmech='LDAP') as connection:
    connection.autocommit = True
    crsr = connection.cursor() 
    sql_command="""SELECT SOURCE_ORDER_NUMBER
    FROM DL_DB.BV_BO
    WHERE TRANS_TYPE='AR'
    """
    crsr.execute(sql_command) 

result = crsr.fetchall()

---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
<ipython-input-26-be601f4ff898> in <module>
----> 1 result = crsr.fetchall()

//anaconda3/lib/python3.7/site-packages/teradatasql/__init__.py in fetchall(self)
    921         try:
    922             rows = []
--> 923             for row in self:
    924                 rows.append(row)
    925 

//anaconda3/lib/python3.7/site-packages/teradatasql/__init__.py in __next__(self)
    991                     sErr = ctypes.string_at (pcError).decode ('utf-8')
    992                     goside.goFreePointer (self.connection.uLog, pcError)
--> 993                     raise OperationalError (sErr)
    994 
    995                 if pcColumnValues:

OperationalError: 6 is not a valid rows handle

标签: pythonteradata

解决方案


缩进在 Python 中很重要。试试这个方法

import teradatasql

with teradatasql.connect(host='PPTT', user='**', password='***', logmech='LDAP') as connection:
    connection.autocommit = True
    crsr = connection.cursor() 
    sql_command="""SELECT SOURCE_ORDER_NUMBER
    FROM DL_DB.BV_BO
    WHERE TRANS_TYPE='AR'
    """
    crsr.execute(sql_command) 

    result = crsr.fetchall()
...

推荐阅读