2017-08-09 50 views
2

在嘗試自行解決此問題後,我需要一些幫助或向正確方向推動。如何使用SQLAlchemy和pyodbc將Scrapinghub上部署的Scrapy spider連接到遠程SQL服務器?

我在Scrapinghub上編寫並部署了Scrapy蜘蛛。該蜘蛛收集一些數據,並在完成後將該數據保存到遠程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?我需要使用哪些驅動程序參數才能成功連接?

謝謝!

+0

我想你需要[定製Docker鏡像](https://shub.readthedocs.io/en/stable/deploy-custom-image.html)與所需的ODBC驅動程序 –

+0

謝謝你的迴應@paul trmbrth!我還使用Scrapy-Splash和這個蜘蛛,如果我使用定製的Docker鏡像,我可以實現所有需要的功能嗎?你可以建議,也許我已經可以使用預製圖像?我不是很熟悉Docker部署,並嘗試按照本教程進行操作:https://blog.scrapinghub.com/2016/09/08/how-to-deploy-custom-docker-images-for-your-web-crawlers/ 但不幸的是,所有這些都不能按預期工作,現在我有兩個問題:) – Vlad

+0

如果您在Dockerfile中添加「pip install scrapy-splash」步驟,則使用scrapy-splash不是問題。我不知道Scrapinghub是否與這些驅動程序預先建立了映像。最好是聯繫Scrapinghub支持,如果他們有。 –

回答

0

Can't open lib 'ODBC Driver 13 for SQL Server' : file not found

以上錯誤通常與錯誤配置或缺少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

相關問題