如何使用SQLAlchemy和pyodbc将部署在Scrapinghub上的Scrapy蜘蛛连接到远程SQL服务器?

时间:2017-08-09 12:11:33

标签: python sqlalchemy scrapy pyodbc scrapinghub

在尝试自己解决这个问题后,我需要一些帮助或推动正确的方向。

我在Scrapinghub上编写并部署了Scrapy spider。此蜘蛛收集一些数据,完成后将该数据保存到远程Microsoft SQL Server。我使用SQLAlchemy作为ORM和Pyodbc作为驱动程序。 要使用蜘蛛代码连接到数据库,我使用:

params = quote_plus('DRIVER={ODBC Driver 13 for SQL Server};SERVER="server";DATABASE="db";UID="user";PWD="pass")
engine = create_engine("mssql+pyodbc:///?odbc_connect={}".format(params))

在我的本地PC上使用Win10一切正常 - 蜘蛛成功连接到远程数据库并保存数据。  但是如果我尝试在Scrapinghub上运行这个蜘蛛,我会收到一个错误: DBAPIError: (pyodbc.Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found (0) (SQLDriverConnect)")

似乎是DRIVER部分的问题。我尝试将DRIVER={ODBC Driver 13 for SQL Server}更改为DRIVER={SQL Server}DRIVER={FreeTDS},但仍然收到相同的错误can't open lib 'lib_name' : file not found

Scrapinghub是否支持与Microsoft SQL Server的连接?为了成功连接,我需要使用哪些驱动程序参数?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

无法打开lib'用于SQL Server的ODBC驱动程序13':找不到文件

以上错误通常与配置错误或缺少odbcinst.ini文件有关。

运行odbcinst -j并验证odbcinst.ini是否存在且是否具有正确的驱动程序路径,例如

[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib

以下是创建用户配置文件(~/.odbcinst.ini)的示例命令:

printf "[ODBC Driver 13 for SQL Server]\nDescription=Microsoft ODBC Driver 13 for SQL Server\nDriver=/usr/local/lib/libmsodbcsql.13.dylib\n" >> ~/.odbcinst.ini

请参阅:Installing the Microsoft ODBC Driver for SQL Server on Linux and macOS

如果您使用的是Anaconda,请查看此问题:ODBC Driver 13 for SQL Server can't open lib