在Teradata Python模块

时间:2017-10-11 15:24:48

标签: python python-3.x teradata

我在python中运行以下代码段:

with udaExec.connect(method="ODBC", system=<server IP>,username=<user>,password=<pwd>) as session:

    for row in session.execute("""sel top 3 * from retail.employee"""):
        print(row)

上述查询返回的数据没有列名。在python3.x中使用teradata python模块时,如何从employee表中提取列名和数据?

3 个答案:

答案 0 :(得分:1)

我将使用pandas和teradata来完全控制数据。

import teradata
import pandas as pd

with udaExec.connect(method="ODBC", system=<server IP>,username=<user>,password=<pwd>) as session:

    query = '''sel top 3 * from re

    tail.employee'''
    df = pd.read_sql(query,session)

print(df.columns.tolist()) #columns
print(df.head(2)) # beautiful first 2 rows

答案 1 :(得分:0)

我发现熊猫非常粗,但有时很有用。

但我看到列名在游标描述中:https://pypi.org/project/teradatasql/#CursorAttributes

此页面的 pypi 中的索引对我不起作用,因此您可能需要向下滚动,但您应该会找到以下内容:

square

如果你想将pandas复制到_dict,可以执行以下操作:

.description

Read-only attribute consisting of a sequence of seven-item sequences that each describe a result set column, available after a SQL request is executed.

.description[Column][0] provides the column name.
.description[Column][1] provides the column type code as an object comparable to one of the Type Objects listed below.
.description[Column][2] provides the column display size in characters. Not implemented yet.
.description[Column][3] provides the column size in bytes.
.description[Column][4] provides the column precision if applicable, or None otherwise.
.description[Column][5] provides the column scale if applicable, or None otherwise.
.description[Column][6] provides the column nullability as True or False.

结果:

    with teradatasql.connect(**conn) as con:
        with con.cursor () as cur:
            cur.execute("sel top 3 * from retail.employee;")
            rows = cur.fetchall()
            columns=[d[0] for d in cur.description]
            list_of_dict=[{columns[i]:rows[j][i] for i in range(0,len(columns))} for j in range(1,len(rows[0]))]

答案 2 :(得分:-1)

你试过了吗?

with udaExec.connect(method="ODBC", system=<server IP>,username=<user>,password=<pwd>) as session:

for row in session.execute("""sel top 3 * from retail.employee"""):
        print(row.name + ": " row.val)