Menggunakan instalasi unixODBC alternatif

Saya bekerja di lingkungan yang telah menginstal unixODBC pada drive yang dipasang secara terpusat di seluruh organisasi, tetapi kami (pengembang sebenarnya) tidak diizinkan untuk menginstal driver atau sumber data di dalamnya. Semuanya terbalik tetapi saya harus menjalaninya.

Saat ini saya sedang mencoba membuat aplikasi python yang terhubung ke server mssql 2005 dari lingkungan unix ini, jadi saya jelas memerlukan beberapa driver sql!

Saya menghindari kurangnya akses ke unixODBC yang telah diinstal sebelumnya dengan menginstal ulang unixODBC pada bagian drive yang saya kendalikan sepenuhnya. Saya telah menginstal freeTDS dan mengonfigurasi semuanya sehingga saya berhasil terhubung ke server dengan isql -- bagus!

Sekarang satu-satunya masalah adalah, ketika saya menjalankan baris di program python saya (yang menggunakan pyodbc) seperti:

import pyodbc
pyodbc.connect("DSN=<dsn_name>;UID=...;PWD=...", autocommit=True)

saya mendapat

 ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')

Saya berasumsi ini karena pyodbc masih mencari instalasi unixODBC asli dan bukan instalasi lokal saya. Jadi saya bertanya-tanya:

Bagaimana cara mengkonfigurasi skrip saya untuk mencari instalasi unixODBC lokal saya dan bukan yang diinstal pada drive utama


person matrix10657    schedule 24.10.2011    source sumber


Jawaban (3)


pyodbc sulit dipasang di pengaturan khusus. Anda perlu mengedit skrip setup.py untuk mencari unixODBC dari lokasi khusus Anda dengan menambahkan sesuatu seperti

settings['include_dirs'] = ['/opt/local/include']
settings['library_dirs'] = ['/opt/local/lib']

ke fungsi get_compiler_settings.

person tuomur    schedule 24.10.2011
comment
Bisakah Anda menjelaskannya sedikit? Saya tidak pernah benar-benar mengacaukan setup.py dan saya tidak yakin apa yang saya lakukan. - person matrix10657; 25.10.2011
comment
Dengan asumsi Anda menggunakan pyodbc 2.1.11, tambahkan baris yang saya sebutkan di bawah baris nomor 142. Pastikan jalurnya mengarah ke direktori instalasi khusus Anda. - person tuomur; 25.10.2011
comment
Terima kasih @eclaird, saya mengalami masalah yang sama di OS X, di mana Apple yang menyertakan iODBC tidak berfungsi untuk versi MSSQL yang harus saya sambungkan. Saya mengalami masalah dalam membuat pyodbc dibangun dengan instalasi odbc yang berbeda, tetapi solusi Anda berfungsi dengan baik =) - person Justin; 28.06.2013
comment
Ini masih berfungsi dengan pyodbc 3.0.7 (saya kira) bagi saya mengganti opt dengan usr karena saya lebih tipe brewish ;-) dan tentu saja seperti pada jawaban snorris, ubah pengaturan perpustakaan juga menjadi 'odbc' di dalam elif sys. platform == bagian 'darwin'. Setelah melakukan itu, saya dapat berbicara dengan PostgreSQL melalui ODBC. - person Dilettant; 19.04.2014

Terima kasih atas jawaban di atas - ini membuat saya mengedit get_compiler_settings di setup.py untuk memberitahukannya agar tidak menggunakan iodbc default.

Apa yang berhasil untuk saya (OS X 10.9, pyodbc 3.0.7) adalah:

elif sys.platform == 'darwin':
    # OS/X now ships with iODBC.
    #settings['libraries'].append('iodbc')

    # but I don't want to use iodbc, I want to use brewed unixodbc 
    settings['libraries'].append('odbc')
person snorris    schedule 25.10.2013

Masalahnya mungkin karena mencari di file global ini. Anda dapat mengatur lokasi pencarian file odbc.ini dan odbcinst.ini dengan mendefinisikan ODBCSYSINI=/path/to/location/of/inifiles

person Nick Gorham    schedule 01.11.2011