Teradata-熊猫TypeError:'NoneType'对象不可迭代

时间:2018-06-26 21:43:23

标签: python pandas teradata

我正在尝试运行以下代码以使用teradata python库创建Teradata表:

import teradata
import pandas as pd

udaExec = teradata.UdaExec (appName="Hello", version="1.0",
    logConsole=False)
session = udaExec.connect(method="odbc", system="tdprod",
    username="xxx", password="xxx");

sqlStr = "CREATE SET TABLE \"TEST123\" \
(col1 INTEGER) PRIMARY INDEX (col1);"

result = pd.read_sql(sqlStr, self.session)

我收到以下错误:

File "..\pandas\io\sql.py", line 1436, in read_query
columns = [col_desc[0] for col_desc in cursor.description]

TypeError: 'NoneType' object is not iterable

关于如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:0)

您的SQL(sqlStr)是DDL(创建表)->它不会传递任何可放入Pandas数据框(pd.read_sql)中的结果集。

如果您只想创建表,则不需要熊猫:

session.execute(sqlStr);

如果要从表“ TEST123”中读取:

sqlStr = "SELECT col1 FROM Test123;";
result = pd.read_sql(sqlStr, self.session);

或者:

result = pd.read_sql_table("Test123", self.session);

答案 1 :(得分:0)

要附加答案,使用Context Manager是一个好习惯。否则,您将面临未公开会议的风险。

import teradata
import pandas as pd

udaExec = teradata.UdaExec (appName="Hello", version="1.0",
                           logConsole=False)

with udaExec.connect(method="odbc", system="tdprod",
                      username="xxx", password="xxx") as session:

    sqlStr = "CREATE SET TABLE \"TEST123\" \
             (col1 INTEGER) PRIMARY INDEX (col1);"
    # Create Table
    session.execute(sqlStr)

    # Read table to result

    result = pd.read_sql(sqlStr,session)