web-dev-qa-db-ja.com

lib 'SQL Server用ODBCドライバー13'を開けませんか? Symリンクの問題?

Pyodbcでsqlサーバーデータベースに接続しようとすると(Macの場合):

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)

次のエラーが表示されます。

エラー:( '01000'、 "[01000] [unixODBC] [Driver Manager] lib 'ODBC Server 13 for SQL Server'を開けません:ファイルが見つかりません(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}'への参照を取得して、作業を再開するにはどうすればよいですか?

最初に このガイド を使用してドライバーをインストールしました。そして、Mac Sierraでanacondaを使用している場合、それが役立ちますか?

30
emehex

ランニング:

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/odbc.ini

これで問題は解決しました。

48
emehex

私の場合、pyodbcデータベースドライバー文字列を次のように変更する必要があります。
driver='{ODBC Driver 17 for SQL Server}'

実際には、私のpythonコードpyodbcODBC Driver 13を期待していました
ただし、ODBCドライバーのバージョンが(ubuntuの更新により)現在のバージョンODBCドライバー17に更新されたため、問題が発生しました。

28
Uzzal Podder

私の場合、Mac OSがあり、次のコマンドで問題が修正されました。

brew tap Microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools
14
Rene B.

私の場合、次の3つの手順で問題を修正しました。

# Step1: install unixodbc 
brew install unixodbc

# Step2: install Microsoft ODBC Driver for SQL Server on MacOS

brew tap Microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools

# Step3:verify odbcinst configuration path is correct

odbcinst -j

Sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini
Sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini
1
KevinQiang

別のドライバー(FreeTDS)を使用しており、接続文字列でそれを言及するのを省略した場合、driver='{ODBC Driver 17 for SQL Server}またはそのようなものがデフォルトになることを追加する必要があります。

解決策はドライバーを忘れないことです。DB設定は次のようになります:'default': { 'ENGINE': 'sql_server.pyodbc', 'Host': '127.0.0.1', 'NAME': 'mydb', 'PORT': '1433', 'USER': 'sa', 'PASSWORD': '*****', 'OPTIONS':{ 'driver': 'FreeTDS', 'Host_is_server': True, } }

0
Patrick