如何通过python+sqlalchemy获得MSsql视图的结构

话不多说

目的:为了对接第三方表视图,需要知道表视图的字段结构,如名称,对应的表字段类型

实现结果如图:

直接上代码:

复制代码
from sqlalchemy import create_engine, MetaData, select, text
from web import urlquote

DRIVER = "ODBC Driver 18 for SQL Server"
INSTANCENAME = "\SQLEXPRESS"
host='127.0.0.1'
pwd='xxxxxxxxxxx'
dbname='dbdbdbdb'
engine = create_engine(f"mssql+pyodbc://sa:{urlquote(pwd)}@{host}{INSTANCENAME}:1433/{dbname}?driver={DRIVER}&TrustServerCertificate=yes", fast_executemany=True)


# 查询所有的视图名称
views_query = text("""
SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_SCHEMA = 'dbo'
""")
with engine.connect() as conn:
    result = conn.execute(views_query)
    views = result.fetchall()

    # 对于每个视图,查询其字段和字段类型
    for view in views:
        if 'vw_OrdersByTimestamp'==view['TABLE_NAME']:
            view_name = view['TABLE_NAME']
            columns_query = text("""
            SELECT COLUMN_NAME, DATA_TYPE 
            FROM INFORMATION_SCHEMA.COLUMNS 
            WHERE TABLE_NAME = :view_name AND TABLE_SCHEMA = 'dbo'
            """)
            result = conn.execute(columns_query, view_name=view_name)
            columns = result.fetchall()
            print(f"视图名称: {view_name}")
            for column in columns:
                print(f"列名: {column['COLUMN_NAME']}, 数据类型: {column['DATA_TYPE']}")


    # 关闭数据库连接
    engine.dispose()

以上未完,后续有待解决对应的物理表名称,物理表字段名称

相关推荐
测试运维日常笔记19 分钟前
Oracle 数据库连接认证方式详解
数据库·oracle
ClouGence1 小时前
PostgreSQL 同步到 Iceberg:开源、私有部署与 SaaS 方案对比
数据库·postgresql·开源
这个DBA有点耶1 小时前
DBA进阶之路:从“修数据库”到“管架构债”
数据库·架构·dba
ACP广源盛139246256732 小时前
WAIC2026 国产超节点算力浪潮下@ACP#IX9104 在算力矩阵中的定位与落地场景
大数据·数据库·人工智能·嵌入式硬件·线性代数·矩阵
珠***格2 小时前
通信链路全打通:西格电力四可装置的 4G/5G + 加密认证技术详解
大数据·数据库·分布式·5g·架构·能源
盗理者2 小时前
AI Agent 技能分享|从零实现 MCP Server,让 Agent 安全读取数据库
数据库·oracle
xqqxqxxq3 小时前
Redis 五大常用数据类型 + 通用命令笔记
数据库·redis·笔记
l1t3 小时前
DeepSeek总结的在 pg_stat_statements 中诊断高基数工作负载
数据库·缓存·postgresql
神奇霸王龙3 小时前
Agentic RAG 双硬门屠夫:5 旗舰实测
数据库·人工智能·ai·agent·ai编程·ai写作·rag
ACP广源盛139246256734 小时前
WAIC2026 国产算力浪潮下@ACP#IX8024 在算力矩阵中的定位与落地场景
大数据·数据库·人工智能·嵌入式硬件·线性代数·矩阵