2014-11-05 74 views
3

我一直在這裏待了好幾個小時,但無法弄清楚我的方法有什麼問題。我想讀表到使用SQLAlchemy的(從SQL Server 2012實例)大熊貓得到以下錯誤:從SQL Server中使用sqlalchemy將表讀入pandas

DBAPIError: (Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)") None None

我用下面的代碼:

import sqlalchemy as sql 

from sqlalchemy import create_engine 

import pyodbc 

pyodbc.connect('DSN=MYDSN;UID=User;PWD=Password') 

其中回報:

<pyodbc.Connection at 0x10a26a420> 

我認爲哪個好。然後當我運行以下內容:

connectionString = 'mssql+pyodbc://User:[email protected]/Database' 
engine = sql.create_engine(connectionString) 

pd.read_sql("ecodata", engine) 

我收到上面提到的以下錯誤。

我的驅動程序設置有問題嗎?我一直在與驅動程序設置摔跤幾天,並認爲我有它擊敗。

任何幫助,非常感謝。

+0

請參閱http://docs.sqlalchemy.org/en/rel_0_9/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc查看有關使用sqlalchemy連接到sql server的文檔。似乎你應該能夠做一些像'create_engine(「mssql + pyodbc:// User:Password @ MYDSN」)''。 – joris 2014-11-05 22:58:01

+0

但是從錯誤信息看來,您的驅動程序似乎有問題。你知道你使用哪個驅動程序嗎? (在什麼平臺上?) – joris 2014-11-05 23:05:23

+0

我在OSX上,相信我在使用unixODBC。有沒有辦法檢查,無論是從終端或在Python中? – RJH2 2014-11-05 23:41:02

回答

3

爲了記錄在案,回答我的問題是由里斯想通了:

我的連接字符串語法錯了,當我改變了它從這個

connectionString = 'mssql+pyodbc://User:[email protected]/Database' 

這個

connectionString = 'mssql+pyodbc://User:[email protected]:Port/Database?driver=FreeTDS' 

它的工作!

再次感謝您的幫助!

0

嘗試形成像這樣的連接。你需要更多的參數。

con = pyodbc.connect('DRIVER={FreeTDS};SERVER="yourserver";PORT=1433;DATABASE=yourdb;UID=youruser;PWD=yourpassword;TDS_Version=7.2;') 

要弄清楚哪些TDS版本使用方法:

http://www.freetds.org/userguide/choosingtdsprotocol.htm

希望這有助於!

+0

事情是, OP想要使用熊貓'read_sql',爲此需要一個sqlalchemy引擎。 – joris 2014-11-05 23:00:07

+0

啊,很好的抓住joris。我upvoted。 – FlipperPA 2014-11-07 13:14:39

相關問題