如何通过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()

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

相关推荐
Chloeis Syntax9 分钟前
MySQL初阶学习日记(7)--- 事务
java·数据库·笔记·学习·mysql
奔跑吧 android11 分钟前
【ubuntu】【unattended-upgrades 介绍】
服务器·数据库·ubuntu
l1t12 分钟前
PostgreSQL在psql中执行INSERT语句时不显示插入条数信息的方法
数据库·postgresql
越甲八千19 分钟前
SQL注入
数据库·sql·oracle
安当加密24 分钟前
数据库密码还在 Git 里?用 SMS凭据管理系统实现生产/开发环境隔离
数据库·git
安科瑞刘鸿鹏1732 分钟前
当宿舍开始“提前预警”,用电安全会发生什么变化?
运维·服务器·网络·数据库
杨了个杨898234 分钟前
CentOS 8 完整实现 Rsyslog 日志写入 MySQL 数据库
数据库·mysql·centos
科技D人生34 分钟前
PostgreSQL学习总结(16)—— PostgreSQL 插件之 pgvector
数据库·postgresql·pgvector·向量数据库引擎·pgsql 向量数据库
herinspace41 分钟前
管家婆软件套接字服务器打不开怎么解决
运维·服务器·数据库
爱潜水的小L42 分钟前
自学嵌入式day42,html
数据库·oracle·html