我正在使用PyTd teradata
模块查询Teradata中的数据,并希望将其读入Pandas DataFrame
import teradata
import pandas as pd
# teradata connection
udaExec = teradata.UdaExec(appName="Example", version="1.0",
logConsole=False)
session = udaExec.connect(method="odbc", system="", username="", password="")
# Create empty dataframe with column names
query = session.execute("SELECT TOP 1 * FROM table")
cols = [str(d[0]) for d in query.description]
df = pd.DataFrame(columns=cols)
# Read data into dataframe
for row in session.execute("SELECT * FROM table"):
print type(row)
df.append(row)
row
属于teradata.util.Row
class
,无法附加到数据框。我尝试将其转换为列表,但格式搞砸了。
如何使用teradata
模块从Teradata将数据读入数据框?我无法使用pyodbc
模块。
有没有更好的方法来创建列名与数据库中的列名相匹配的空数据框?
答案 0 :(得分:4)
您可以使用pandas.read_sql:)
import teradata
import pandas as pd
# teradata connection
udaExec = teradata.UdaExec(appName="Example", version="1.0",
logConsole=False)
with udaExec.connect(method="odbc", system="", username="", password="") as session:
query ="SELECT * FROM table"
df = pd.read_sql(query,session)
使用'with'将确保查询后关闭会话。我希望这有助于:)
答案 1 :(得分:0)
我知道它有点晚了。但不过要做一个说明。
这里有几个问题。
如何使用数据从Teradata将数据读入数据框 teradata模块?
在一天结束时,teradata.util.Row只是一个列表。所以一个简单的列表操作应该可以帮助你摆脱Row。
','.join(str(item) for item in row)
有点儿。
将其推入pandas数据框应该是df转换练习的列表。
我无法使用pyodbc模块。
我使用teradata的python模块进行LDAP身份验证。一切正常。没有这个要求。遗憾。
有没有更好的方法来创建列名与数据库中的列名相匹配的空数据框?
我假设,给定一个表名,你可以查询它的架构(表名)>>将其转换为列表并创建您的pandas df?
答案 2 :(得分:0)
我知道这已经很晚了。
您可以使用pandas模块中的read_sql()。它返回pandas数据帧。
以下是参考: http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.read_sql.html