2017-06-13 25 views
6

私は(Macの場合)pyodbcでSQL Serverデータベースに接続しよう:lib 'SQL Server用ODBCドライバ13'を開くことができません? Symのリンク問題?

import pyodbc 

server = '####' 
database = '####' 
username = '####@####' 
password = '#####' 
driver='{ODBC Driver 13 for SQL Server}' 

pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+password) 

私は次のエラーを取得する:

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

実際のドライバの場所で、私はパス:

driver='/usr/local/lib/libmsodbcsql.13.dylib' 

これは作業を開始します。

odbcinst.iniは、次のようになります。

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

どのように私はdriver='{ODBC Driver 13 for SQL Server}'に私の参照が再び作業を開始するために得ることができますか?

私は最初にthis guideを使用してドライバをインストールしました。それが役に立ったら、Mac Sierraでanacondaを使用していますか?

+0

[この回答](https://stackoverflow.com/a/28488604/2144390)をご覧ください。 odbcinst.iniファイルがunixODBC(および/またはanaconda)が予期している場所にない可能性があります。 –

答えて

12

実行:

もたらした
odbcinst -j 

unixODBC 2.3.4 
DRIVERS............: /etc/odbcinst.ini 
SYSTEM DATA SOURCES: /etc/odbc.ini 
FILE DATA SOURCES..: /etc/ODBCDataSources 
USER DATA SOURCES..: /Users/emehex/.odbc.ini 
SQLULEN Size.......: 8 
SQLLEN Size........: 8 
SQLSETPOSIROW Size.: 8 

代わりの/etc/ディレクトリにファイルをコピー(unixODBCのは、彼らがいたと思った理由はわからない)私は、各ファイルへのシンボリックリンクを作成しました:

sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini 
sudo ln -s /usr/local/etc/odbc.ini /etc/odbci.ini 

これが問題を解決しました。私の場合は

+0

良い解決策 - あなたの質問に答える。 unixODBCはデフォルトで '/ etc'の' odbc.ini'と 'odbcinst.ini'を検索します。また、ユーザのホームディレクトリに '.odbc.ini'と' .odbcinst.ini'をチェックします。 (FreeTDSはレコードの 'freetds.conf' /' .freetds.conf'と同じです。) – FlipperPA

+0

これは動作しますが(私はドライバをアンインストールして再インストールする必要がありましたが、https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac /install-the-microsoft-odbc-driver-for-sql-server)ですが、小さな誤植があります: '' 'sudo ln -s/usr/local/etc/odbc。 ini/etc/odbc.ini'' – alexvicegrab

+0

このエラーは、新しいバージョンのドライバに更新した場合にも発生します。 ファイルが存在する場合は、/etc/odbcinst.ini の内容を確認してください。つまり、 $ cat/etc/odbcinstです。INI [SQL ServerのODBCドライバー17] 説明=のMicrosoft ODBC SQL Serverのドライバ17 ドライバ=は/ opt /マイクロソフト/ msodbcsql/lib64に/ libmsodbcsql-17.0.so.1.1 UsageCount = 1 その後、コンテンツを更新あなたのsciptの新しいドライバを使用する。 この場合、ドライバはバージョン13からバージョン17に更新されました。 完全性のためにこの情報を追加することをお勧めします。 – earnshae

1

、私は
driver='{ODBC Driver 17 for SQL Server}'

pyodbcデータベースドライバ文字列を変更する必要があり、実際に、私のPythonコードでpyodbcODBCドライバ13
を期待しますが、ODBCドライバのバージョンなどして現在のバージョンODBCドライバ17に更新されました(ubuntuアップデートのため)。問題が発生しました。

関連する問題