像这样创建SQLALchemy engine
之后
engine = create_engine('mssql+pyodbc://user:pass@dbserver:port/db_name?driver=ODBC+Driver+13+for+SQL+Server)
是否可以从引擎对象中获取db_name
?我知道我可以从连接字符串中解析名称,但是有更好的方法吗?我看了SQLAlchemy-API,但找不到答案。
答案 0 :(得分:1)
引擎提供了连接信息,因此您可以访问这些参数。例如,如果您在调试器中,则可以执行以下操作:
(pdb) pp dir(dbconn.engine.url)
[...
'database',
'drivername',
'get_backend_name',
'get_dialect',
'get_driver_name',
'host',
'password',
'password_original',
'port',
'query',
'translate_connect_args',
'username']
因此获取数据库名称的简单方法是:
engine.url.database
答案 1 :(得分:0)
我相信您是对的,无法打印数据库名称,但是,如果需要,您可以提取默认架构名称或检查可用的架构
from sqlalchemy import inspect
inspector=inspect(engine )
inspector.default_schema_name