2017-06-13 47 views
6

I (mac) pyodbc ile SQL Server veritabanına bağlanmayı deneyin:Lib 'ODBC Sürücüsü 13 SQL Server için' açamıyor musunuz? Sym bağlantı sorunu?

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) 

alıyorum aşağıdaki hata:

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

zaman fiili sürücü konumda ben yolu:

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

Çalışmaya başlar! Böyle

Benim odbcinst.ini görünüyor:

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

nasıl driver='{ODBC Driver 13 for SQL Server}' benim referans yeniden çalışmaya başlamak için alabilirim?

Öncelikle sürücüyü yüklemek için this guide kullanıyorum. Eğer yardım ederse Mac Sierra'da anakconda kullanıyorum?

+0

[Bu yanıt] 'a bir bakın (https://stackoverflow.com/a/28488604/2144390). Odbcinst.ini dosyanız unixODBC (ve/veya anaconda) olmasını beklediği yerde olmayabilir. –

cevap

12

Koşu:

odbcinst -j 

Üreyen:

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 

yerine (unixODBC orada olduklarını düşünmüş emin değilim neden) Ben her dosyanın bir sembolik bağ oluşturdu /etc/ dizinine dosya kopyalama:

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

Bu sorun çözüldü! Benim durumumda

+0

İyi bir çözüm - sorunuza cevap vermek için. unixODBC, 'odbc.ini' ve' odbcinst.ini' '/ etc' için arama yapar. Ayrıca, kullanıcının .odbc.ini ve '.odbcinst.ini' için giriş dizinini de kontrol edecektir. (FreeTDS, kayıt için 'freetds.conf' /' .freetds.conf' ile aynı şeyi yapar.) – FlipperPA

+0

Bu, (https://docs.microsoft.com/en-us sürücüsünü kaldırıp yeniden yüklememize rağmen)/sql/connect/odbc/linux-mac/microsoft-odbc-driver-for-sql-server'ı kurarken, küçük bir yazım hatası var: '' 'sudo ln -s/usr/local/etc/odbc. ini/etc/odbc.ini''' – alexvicegrab

+0

Bu hata, sürücünün yeni bir sürümünü güncellediyseniz de oluşabilir. Dosyalanan varsa, /etc/odbcinst.ini yani: $ cat/etc/odbcinst içeriğini kontrol edin.ini [ODBC SQL Server için Sürücü 17] Açıklama = SQL Server için Microsoft ODBC sürücüsü 17 Sürücü =/opt/microsoft/msodbcsql/lib64/libmsodbcsql-17.0.so.1.1 UsageCount = 1 Ardından içeriği güncellemek yeni sürücüyü kullanmak için scipt'iniz. Bu durumda sürücü sürüm 13'ten 17 sürümüne güncellendi. Bu bilgileri tamlık için eklemenizi öneririm. – earnshae

1

, ben ODBC sürücüsü sürüm olarak benim piton kodu pyodbc bekliyordum ODBC sürücüsü 13
yılında, driver='{ODBC Driver 17 for SQL Server}'

aslında
için pyodbc veritabanı sürücüsü dize değiştirmek ancak zorunda (Ubuntu güncelleştirmesi nedeniyle) güncelleştirilmiş sürüm ODBC Sürücüsü 17 güncelleştirildi, sorun oluştu.

İlgili konular