如何在 Python Teradata 模块 PyTD 中使用易失性表

CGe*_*ain 0 python sql teradata pandas

有谁知道如何在 PyTd Teradata ODBC 模块中使用易失性表?我可以运行单个查询并返回结果,但是如果我尝试使用易变表构建查询,我会不断收到错误消息。有什么帮助吗?我对python相当陌生。

我正在使用

udaExec = td.UdaExec (appName="dpull", version="1.0",logConsole=False)
with udaExec.connect(method="ODBC",dsn="tdata", username="un", 
password="pw") as session:

query = """"
create volatile table vol_table
,no fallback, no before journal, no after journal as 
    (
    select a, b, c
    from my_table1
    )
with data primary index (a)
on commit preserve rows

Select vt.a, vt.b, vt.c, t2.a
from vol_table vt
inner join table2 t2
on vt.anything = t2.anything
""""
df = pd.read_sql(query,session)
Run Code Online (Sandbox Code Playgroud)

错误:

 `InterfaceError: ('SQL_INVALID_HANDLE', 'Invalid handle passed to SQLGetDiagRecW.')`
Run Code Online (Sandbox Code Playgroud)

CGe*_*ain 5

好的,感谢Teradata 论坛上的一些帮助,我能够解决这个问题。您可以按照相同的结构添加任意数量的查询:

import teradata as td
import pandas as pd
from teradata import tdodbc

udaExec = td.UdaExec (appName="dpull", version="1.0",logConsole=False)
with udaExec.connect(method="ODBC",dsn="tdata", username="un", 
password="pw") as session:

query1 = """
    create volatile table vol_table
    ,no fallback, no before journal, no after journal as 
        (
        select a, b, c
        from my_table1
        )
     with data primary index (a)
     on commit preserve rows;
"""
query2 = """
    Select vt.a, vt.b, vt.c, t2.x
    from vol_table vt
    inner join table2 t2
    on vt.a = t2.a
"""
session.execute(query1)
df = pd.read_sql(query2,session)
Run Code Online (Sandbox Code Playgroud)