概要
Yosemiteバージョン10.10.1でMacを使用して、MSSQLServerデータベースに接続しようとしています。検索したところ、更新された詳細な回答が見つかりませんでした。そのため、このすばらしい記事からの記事を以下に示しますここ 。リンクが切れた場合に備えて、stackoverflowに追加しています。アイデアは、セットアップ/接続するために次のレイヤーを用意することです。
レイヤー
- パート1-pyodbc
- パート2-freeTDS(tsqlで確認できます)
- パート3-unixODBC(isqlで確認可能)
- パート4-MSSQL(通常のPythonプログラムで確認できます)
手順
-
自作をインストールする こちら から -これはMacOSXのパッケージマネージャーです。この記事は、別のパッケージマネージャー「MacPorts」の使用方法を示しています。私の指示では、彼らは自作です。基本的に、homebrewには、さまざまなバージョンのパッケージを保持するフォルダ「cellar」があります。通常のファイルを変更する代わりに、これらの自作パッケージを指します。
-
Pyodbcをインストールする必要がありますが、pyodbcはデフォルトでiODBCドライバー(Macにインストールされています)を使用しますが、多くの人がそれを機能させるのに問題があります。したがって、
unixodbc
と呼ばれる代替手段を使用します。 、将来インストールする予定です。今のところ、unixodbcで動作するようにpyodbcのインストールを構成する必要があります。
PyPiに移動し、pyodbctarballをダウンロードして解凍します。次に、setup.py
でこれらの行を変更します :
elif sys.platform == 'darwin':
# OS/X now ships with iODBC.
settings['libraries'].append('iodbc')
宛先:
elif sys.platform == 'darwin':
# OS/X now ships with iODBC.
settings['libraries'].append('odbc')
次に、python setup.py install
を実行します。 。
これにより、pyodbcのインストールではデフォルトでunixodbcドライバーが使用されます。完璧です!
-
FreeTDSをインストールする
brew install freetds --with-unixodbc
を使用 (FreeTDSは、MacODBCとMSSQLServerの間にあるドライバーです。これ ここのグラフは、特定のMicrosoftServerバージョンに基づいて使用する必要があるTDSのバージョンを示しています。例えばMicrosoft SQL Server 2008用のtdsプロトコル7.2)。 -
freetds.conf
を構成します ファイル(ファイルは「/usr/local/etc/freetds.conf」にある必要があります。Homebrewの場合は「/usr/local/Cellar/freetds/0.91_2/etc」と言うリンクですが、どこか違う可能性がありますバージョンによって異なります)。グローバルを編集し、データベース情報を最後に追加しました(何らかの理由で、「tds version =7.2」はエラーをスローしますが、8.0は機能しますが、それでも機能します):[global] # TDS protocol version tds version = 8.0 [MYSERVER] host = MYSERVER port = 1433 tds version = 8.0
-
FreeTDSがインストールされていることを確認します 正しく:
tsql -S myserver -U myuser -P mypassword
(機能した場合は、このようなプロンプトが表示されます)locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" 1>
-
unixODBCをインストールします
brew install unixodbc
を使用 。 -
unixODBC構成ファイルをセットアップします 、 odbcinst.iniが含まれます (ドライバー構成)、および odbc.ini (DSN構成ファイル)。デフォルトでは、私のファイルは
/Library/ODBC
にありました。 (注:私のユーザーライブラリ、別名/ Users / williamliu / Libraryではありません)。または、自作のインストールディレクトリ/usr/local/Cellar/unixodbc/<version>/etc
にある可能性もあります。 。 -
' odbcinst.iniを開きます 'ファイルを追加してから、以下を追加します(注:MacPortsを使用する場合は異なります。Homebrewの場合、このファイルは自作バージョンへのリンクです。たとえば、私のものは'/usr/local/Cellar/freetds/0.91_2/lib/libtdsodbc.soにあります。 '):
[FreeTDS] Description=FreeTDS Driver for Linux & MSSQL on Win32 Driver=/usr/local/lib/libtdsodbc.so Setup=/usr/local/lib/libtdsodbc.so UsageCount=1
-
' odbc.iniを開きます '次に、以下を追加します(これは通常、
odbcinst.ini
と一緒です) :[MYSERVER] Description = Test to SQLServer Driver = FreeTDS Trace = Yes TraceFile = /tmp/sql.log Database = MYDATABASE Servername = MYSERVER UserName = MYUSER Password = MYPASSWORD Port = 1433 Protocol = 8.0 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No
-
unixODBCを確認する 正しくインストールされている:
isql MYSERVER MYUSER MYPASSWORD
。接続できないというエラーが発生した場合は、-v
を追加してください 詳細な出力が何であるかを確認し、それを修正します。それ以外の場合は、次のように表示されます:+---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+
-
pyodbcが機能することを確認する Pythonプログラムで。シェルでpythonを実行するか、これを使用して.pyファイルを実行すると、クエリが返されます。
import pyodbc import pandas import pandas.io.sql as psql cnxn = pyodbc.connect('DSN=MYSERVER;UID=MYUSER;PWD=MYPASSWORD') cursor = cnxn.cursor() sql = ("SELECT * FROM dbo.MYDATABASE") df = psql.frame_query(sql, cnxn)
ドキュメント を参照できます。 この後、より多くの助けを得るためにpyodbcの。