python – 在SQLAlchemy中,我可以从现有的ODBC连接创建引擎吗?

我正在一个我获得ODBC连接的环境中工作,该连接是使用我无法访问的凭据创建的(出于安全原因).但是我想使用SQLAlchemy访问底层数据库 – 所以我的问题是,我可以将这个ODBC连接传递给类似create_engine的东西,或者以一种看起来像SQLAlchemy连接的方式包装它吗?

作为一个补充问题(并且乐观地假设第一部分可以满足),我可以告诉SQLA用于底层RDBMS的方言是什么?

谢谢

解决方法:

是的你可以:

from sqlalchemy import create_engine
from sqlalchemy.pool import StaticPool
eng = create_engine("mssql+pyodbc://", poolclass=StaticPool, creator=lambda: my_odbc_connection)

但是,如果您确实只创建了一个连接,而不是创建它们的可调用连接,则必须仅在一个线程中使用此引擎,一次只能使用一个操作.在多线程应用程序中使用它不是线程安全的.

如果OTOH你实际上可以获得一个Python函数,无论何时调用都会创建新的连接,这更加适合:

from sqlalchemy import create_engine
eng = create_engine("mssql+pyodbc://", creator=my_odbc_connection_function)

上述引擎将正常汇集连接,可以*地用作连接源.

上一篇:python – 安装odbc驱动程序到azure应用程序服务


下一篇:c – 在Windows 7,Windows 8.x和Windows 10下,ODBC导出到Excel失败