【问题标题】:Python PyTd teradata Query Into Pandas DataFramePython PyTd teradata 查询到 Pandas DataFrame
【发布时间】:2016-10-17 10:32:11
【问题描述】:

我正在使用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 模块。

有没有更好的方法来创建列名与数据库中的列名匹配的空数据框?

【问题讨论】:

    标签: python pandas teradata


    【解决方案1】:

    你可以使用 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”将确保在查询后关闭会话。我希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      我知道有点晚了。不过还是要记笔记。

      这里有几个问题。

      如何使用 Teradata 将我的数据读入数据帧 teradata 模块?

      说到底,teradata.util.Row 只是一个列表。因此,一个简单的列表操作应该可以帮助您将内容从 Row 中取出。

      ','.join(str(item) for item in row)
      

      有点意思。

      将其推送到 pandas 数据框应该是一个列表到 df 转换练习。

      我无法为此使用 pyodbc 模块。

      我使用了 teradata 的 python 模块来进行 LDAP 身份验证。一切正常。没有这个要求。对不起。

      有没有更好的方法来创建列名与数据库中的列名匹配的空数据框?

      我假设,给定一个表名,您可以查询它的架构(表名)>>将其转换为列表并创建您的 pandas df?

      【讨论】:

        【解决方案3】:

        我知道这已经很晚了。

        您可以使用 pandas 模块中的 read_sql()。它返回熊猫数据框。

        这里是参考: http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.read_sql.html

        【讨论】:

          猜你喜欢
          • 2021-07-12
          • 2016-04-29
          • 2018-09-14
          • 2017-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-10
          • 2023-04-11
          相关资源
          最近更新 更多