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を使用している場合、それが役立ちますか?
ランニング:
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
これで問題は解決しました。
私の場合、pyodbc
データベースドライバー文字列を次のように変更する必要があります。driver='{ODBC Driver 17 for SQL Server}'
実際には、私のpythonコードpyodbcはODBC Driver 13を期待していました
ただし、ODBCドライバーのバージョンが(ubuntuの更新により)現在のバージョンODBCドライバー17に更新されたため、問題が発生しました。
私の場合、Mac OSがあり、次のコマンドで問題が修正されました。
brew tap Microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools
私の場合、次の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
別のドライバー(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, } }