在Teradata

时间:2016-09-22 18:42:57

标签: python teradata

我正在使用python(3.4.3)到一个Teradata数据库的ODBC(相当新的)我想知道(如果可能的话)通过字段名称引用行的值,因为我循环遍历它们而不是通过它们他们的列表索引。 (如果我改变我的表格)就像在VBA中设置的记录一样!语法(记录集!FIELD_NAME)

如果我运行此代码,

udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0", logConsole=False)
session = udaExec.connect(method="odbc", dsn="TEST")
cursor = session.cursor()
rows = list(cursor.execute("SELECT TOP 1 * FROM RES_TBL"))
print(rows)

我的输出是:[<teradata.util.Row object at 0x000000000402D080>]

我最终能够将每一行作为字符串存储在一个列表中,这样我就可以看到它们混乱了,但我觉得这对于更大的数据集来说是个坏主意。如果这不是一个好问题,我很抱歉,但任何事都有帮助!!

我的完整代码目前是:

import teradata
import pyodbc
import json
udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0", logConsole=False)
session = udaExec.connect(method="odbc", dsn="TEST")
cursor = session.cursor()
rows = list(cursor.execute("SELECT TOP 1 * FROM RES_TBL"))
print(rows)
for row in session.execute("SELECT TOP 1 * FROM RES_TBL"):
    testlist = []
    testlist.append(str(row))
    print(testlist)

2 个答案:

答案 0 :(得分:2)

也许你不想出于某些原因使用熊猫,否则我会建议:

import pandas ad pd
cursor = session.execute(SQL_script)
df = pd.DataFrame.from_records(cursor)
cols = []
for row in cursor.description:
    cols.append(row[0])
df.columns = cols
session.close()

答案 1 :(得分:1)

对于想要解决这个问题的其他人,你好,我已经解决了这个问题!

我在这里找到了很棒的帮助链接,这些链接中有一些编程wizzards,我学到了很多!! return SQL table as JSON in python

Output pyodbc cursor results as python dictionary

http://developer.teradata.com/tools/reference/teradata-python-module

这是解决方案!!!

import teradata
import pyodbc
import json
###Dev environment for learning teradata interactions with python

#form the ODBC connection to teradata
try:
    udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0", logConsole=False)
    session = udaExec.connect(method="odbc", dsn="TEST")
    cursor = session.cursor()
    columnNames = []
    rows = cursor.execute("SELECT TOP 1 * FROM RES_TBL")
    for col in rows.description:
        columnNames.append(col[0])

    for row in rows: #session.execute("SELECT TOP 1 * FROM RES_TBL"):
        testlist = []
        testlist.append(dict(zip(columnNames, row)))
    print(testlist)
except:
    raise
finally:
    cursor.close()