python - 使用 python 列出服务器上所有可用的 MS SQL 数据库的名称

标签 python sql-server database sqlalchemy pymssql

尝试使用 Python 列出远程 MS SQL 服务器上的数据库名称(就像 MS SQL Server Management Studio 中的对象资源管理器一样)。

当前解决方案:所需的查询是SELECT name FROM sys.databases;。所以当前的解决方案是使用 SQLAlchemy 和 Pandas,它们工作正常,如下所示。

import pandas    
from sqlalchemy import create_engine
#database='master'
engine = create_engine('mssql+pymssql://user:password@server:port/master')
query = "select name FROM sys.databases;"
data = pandas.read_sql(query, engine)

输出:

                  name
0               master
1               tempdb
2                model
3                 msdb

问题:如何列出服务器上的数据库名称 SQLAlchemy的inspect(engine)类似于列出数据库下的表名?或者没有导入 Pandas 的任何更简单的方法?

from sqlalchemy import inspect

#trial 1: with no database name
engine = create_engine('mssql+pymssql://user:password@server:port')
#this engine not have DB name
inspector = inspect(engine)
inspector.get_table_names() #returns []
inspector.get_schema_names() #returns [u'dbo', u'guest',...,u'INFORMATION_SCHEMA']

#trial 2: with database name 'master', same result
engine = create_engine('mssql+pymssql://user:password@server:port/master')
inspector = inspect(engine)
inspector.get_table_names() #returns []
inspector.get_schema_names() #returns [u'dbo', u'guest',...,u'INFORMATION_SCHEMA']

最佳答案

如果您真正想做的就是避免导入 pandas,那么以下方法对我来说很好:

from sqlalchemy import create_engine
engine = create_engine('mssql+pymssql://sa:saPassword@localhost:52865/myDb')
conn = engine.connect()
rows = conn.execute("select name FROM sys.databases;")
for row in rows:
    print(row["name"])

生产

master
tempdb
model
msdb
myDb

关于python - 使用 python 列出服务器上所有可用的 MS SQL 数据库的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503246/

相关文章:

python - 使用 Python 请求 POST 提交表单数据不起作用

python - 如何使用 lxml、XPath 和 Python 从网页中提取链接?

mysql - 替换多个值 - MySQL

sql-server - 如何查看完整的 SQL 作业历史记录?

c# - 部署失败 : CLR Trigger

php - mysql时间戳转换

mysql - 使用命令行截断 MySQL 数据库中的特定表

python - pycharm控制台错误,控制台无法正常启动

python - 使用 Pyplot 绘制平滑曲面

sql-server - SQL Server Management Studio 无法识别表