Teradata - Pandas TypeError: 'NoneType' object is not iterable
Teradata - Pandas TypeError: 'NoneType' object is not iterable
我正在尝试 运行 使用 teradata python 库创建 Teradata table 以下代码:
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
知道如何解决这个问题吗?
您的 SQL (sqlStr) 是一个 DDL (CREATE Table) -> 它不会传送任何可以放入 Pandas 数据框的结果集 (pd.read_sql).
如果您只想创建 table,则不需要 pandas:
session.execute(sqlStr);
如果你想从 table "TEST123" 中读取:
sqlStr = "SELECT col1 FROM Test123;";
result = pd.read_sql(sqlStr, self.session);
或者:
result = pd.read_sql_table("Test123", self.session);
为了补充 hhoeck 的答案,使用上下文管理器是一个很好的做法。否则您将面临未关闭会话的风险。
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)
我正在尝试 运行 使用 teradata python 库创建 Teradata table 以下代码:
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
知道如何解决这个问题吗?
您的 SQL (sqlStr) 是一个 DDL (CREATE Table) -> 它不会传送任何可以放入 Pandas 数据框的结果集 (pd.read_sql).
如果您只想创建 table,则不需要 pandas:
session.execute(sqlStr);
如果你想从 table "TEST123" 中读取:
sqlStr = "SELECT col1 FROM Test123;";
result = pd.read_sql(sqlStr, self.session);
或者:
result = pd.read_sql_table("Test123", self.session);
为了补充 hhoeck 的答案,使用上下文管理器是一个很好的做法。否则您将面临未关闭会话的风险。
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)