我正在尝试运行以下代码以使用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
关于如何解决此问题的任何想法?
答案 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)