【问题标题】:Referencing fields (columns) by field name in Teradata在 Teradata 中按字段名称引用字段(列)
【发布时间】:2017-01-31 11:30:26
【问题描述】:

我正在使用 python (3.4.3) 到 ODBC 到 Teradata 数据库,(对此相当新)我想知道(如果可能的话)通过字段名称引用行的值,因为我循环遍历它们而不是通过他们的列表索引。 (以防我改变我的表格)就像 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)

【问题讨论】:

    标签: python teradata


    【解决方案1】:

    也许您出于某种原因不想使用 pandas,否则我建议您这样做:

    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()
    

    【讨论】:

    • 我从未听说过熊猫,但我会研究一下!!非常感谢你的帖子!
    • 如果您想在 Python 中处理表格,Pandas 是一种选择。到目前为止,我需要做的事情非常强大。
    【解决方案2】:

    你好,其他试图解决这个问题的人,我已经解决了!

    我在这里找到了很好的帮助链接,这些链接中有一些编程向导,我学到了很多! 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()
    

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多