首页 > 解决方案 > 信息 Schema.columns 返回不同的字符

问题描述

我想将表架构、表名、数据类型和列名导出到 JSON 文件。但是,我设法做到了,数据类型不会返回 varchar 的长度。

如何导出 varchar 的长度,而不是从信息模式中获取不同的字符。

导出.py:

def GetAllTables():
    conn = None

    try:

        params = config()
        conn = psycopg2.connect(**params)
        cur = conn.cursor()
        cur.execute("""SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS;""")
        
        rows = cur.fetchall()

    
        rowarray_list = [] 
        for row in rows:
            rowarray_list.append({'table_schema':row[0],
                                  'table_name': row[1],
                                  'column_name':row[2],
                                  'data_type':row[3]})

        rowarray_file= 'static/api/tables.json'
        with open(rowarray_file, 'w') as outfile:
            j = json.dump(rowarray_list, outfile,indent=4)

        cur.close()
    except(Exception, psycopg2.DatabaseError) as error:
        print(error)

    finally:
        if conn is not None:
            conn.close()    
     

这让我如:

{
    "table_schema": "x",
    "table_name": "x1",
    "column_name": "x11",
    "data_type": "character varying"
}

但是,MySQL 中的数据类型是 varchar(255)。这就是我想提取到 JSON 文件中的内容。

标签: pythonmysqljsonexportinformation-schema

解决方案


推荐阅读