Asi*_*han 5 python database sql-server 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)
Run Code Online (Sandbox Code Playgroud)
输出:
name
0 master
1 tempdb
2 model
3 msdb
Run Code Online (Sandbox Code Playgroud)
问题:如何使用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']
Run Code Online (Sandbox Code Playgroud)
如果您真正想做的就是避免导入 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"])
Run Code Online (Sandbox Code Playgroud)
生产
master
tempdb
model
msdb
myDb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12016 次 |
| 最近记录: |