Connect database through odbc driver with python

運(yùn)行環(huán)境

Mac OS 10.12.6
python 3.6.2
pip 9.0.1

安裝步驟

  1. 下載所需odbc driver。由于筆者安裝ODBC是為了連接Vertica, 此文以Vertica 7.2.x ODBC為例. 進(jìn)入obbc driver下載頁(yè)面, 找到對(duì)應(yīng)版本,下載并安裝pkg文件,默認(rèn)配置安裝即可。

  2. 安裝pyodbc

     $pip3 install --upgrade pyodbc
    
  3. 使用python連接Vertica

     import pyodbc        
     conn = pyodbc.connect(driver='Vertica', server= ServerAddress, Port=Port,database='', uid=UserID, pwd=password)
    

安裝問題

  1. pip install pyodbc 報(bào)錯(cuò)

Error:
src/pyodbc.h:56:10: fatal error: 'sql.h' file not found
#include <sql.h>
^~~~~~~
1 error generated.
error: command 'clang' failed with exit status 1

解決辦法
使用unixodbc Manager替代Apple的 iODBC Driver Manager

    $ brew install unixodbc & pip3 install -U pyodbc
  1. 連接報(bào)錯(cuò)

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

解決辦法
應(yīng)該是odbc driver的配置文件沒有配置好

    $ odbcinst -j

我的配置返回

unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /usr/local/etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

通常odbcinst.init和odbc.init放在了/etc下面,我的調(diào)用了/usr/local/etc/odbcinst.ini,打開發(fā)現(xiàn)是空的,而/etc/odbcinst.ini不空,將兩個(gè)文件從/etc復(fù)制到/usr/local/etc即可。

  $ cp /etc/odbc.ini /etc/odbcinst.ini /usr/local/etc/
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容