我有一个使用pyodbc
(https://github.com/mkleehammer/pyodbc/wiki/Module#connect)关键字功能的pyodbc.connect()
连接对象。
关键字包含驱动程序参数:
conn = pyodbc.connect(driver="SQL Server", server="myserver")
根据此docs的建议,我正在使用此连接通过create_engine()
参数(answer)传递给SQLAlchemy creator
函数:
engine = create_engine("mssql+pyodbc://", creator=lambda: conn)
但是,creator
参数现在忽略了URL
参数中指定的连接参数:
使用此功能会导致忽略URL参数中指定的连接参数。
这意味着我在创建引擎时收到以下警告消息:
SAWarning:未指定驱动程序名称;使用无DSN的连接时,PyODBC会期望这样做 “未指定驱动程序名称;”
但是,将sql查询作为测试运行会返回正确的数据。如何将驱动程序信息(假设其为mssql+pyodbc
)提供给create_engine函数以消除此警告?
答案 0 :(得分:0)
似乎您正在传递DBAPI连接,而不是创建者。尝试声明您的创建者功能:
def creator():
return pyodbc.connect(driver="SQL Server", server="myserver")
并将函数(而不是函数的评估)作为创建者的值传递:
engine = create_engine("mssql+pyodbc://", creator=creator)