在 Teradata 中按字段名称引用字段(列)
Referencing fields (columns) by field name in Teradata
我正在使用 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)
你好,其他任何试图解决这个问题的人,我已经解决了!
我在这里找到了很好的帮助链接,这些链接中有一些编程向导,我学到了很多!!
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()
也许您出于某种原因不想使用 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 (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)
你好,其他任何试图解决这个问题的人,我已经解决了!
我在这里找到了很好的帮助链接,这些链接中有一些编程向导,我学到了很多!! 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()
也许您出于某种原因不想使用 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()