【问题标题】:Python teradatasql get column_name and data_typePython teradatasql 获取 column_name 和 data_type
【发布时间】:2022-01-12 21:24:15
【问题描述】:

我正在使用teradatasql 连接数据库并获取表定义。下面是我的代码,它返回表的定义。在这里,我尝试找到任何将表的colum_name和data_type作为单独函数返回的默认函数。

with teradatasql.connect ('{"host":"whomooz","user":"guest","password":"please"}') as con:
    with con.cursor () as cur:
    try:
                sRequest = "show table MYTABLE"
                print(sRequest)
                cur.execute(sRequest)
                [print(row) for row in sorted(cur.fetchall())]
            except Exception as ex:
                print("Ignoring", str(ex).split("\n")[0])

我在这里寻找任何可以返回 column_namedata_type 的内置函数。

输出应该是这样的

客户名称 VARCHAR

地址 VARCHAR

输入 SMALLINT

我查看了 teradatasql docs 但没有找到任何参考

【问题讨论】:

  • 您可以查询dbc.ColumnsV,尽管您需要解码 ColumnType 代码(例如 CV = VARCHAR,I2 = SMALLINT)。 HELP TABLE 是另一个选项,但再次返回类型代码。

标签: python python-3.x teradatasql


【解决方案1】:

我们提供sample program,演示如何准备SQL 请求并使用fake_result_sets 功能获取结果集列元数据和问号参数标记元数据。

请参阅下面的示例代码,该代码为与fake_result_sets 结合使用的表准备select * 并打印结果集列元数据。

import json
import teradatasql
with teradatasql.connect ('{"host":"whomooz","user":"guest","password":"please"}') as con:
    with con.cursor () as cur:
        cur.execute ("{fn teradata_rpo(S)}{fn teradata_fake_result_sets}select * from dbc.dbcinfo")
        [ print ("DatabaseName={} TableName={} ColumnName={} TypeName={}".format (m ["DatabaseName"], m ["ObjectName"], m ["Name"], m ["TypeName"])) for m in json.loads (cur.fetchone () [7]) ]

打印以下内容:

DatabaseName=DBC TableName=dbcinfo ColumnName=InfoKey TypeName=VARCHAR
DatabaseName=DBC TableName=dbcinfo ColumnName=InfoData TypeName=VARCHAR

【讨论】:

    猜你喜欢
    • 2016-12-15
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多