ใช้การติดตั้ง unixODBC สำรอง

ฉันทำงานในสภาพแวดล้อมที่มีการติดตั้ง unixODBC บนไดรฟ์ที่ติดตั้งส่วนกลางทั่วทั้งองค์กร แต่เรา (นักพัฒนาจริง) ไม่ได้รับอนุญาตให้ติดตั้งไดรเวอร์หรือแหล่งข้อมูลในนั้น ทุกอย่างมันถอยหลังแต่ฉันต้องอยู่กับมัน

ตอนนี้ฉันกำลังพยายามสร้างแอป python ที่เชื่อมต่อกับเซิร์ฟเวอร์ mssql 2005 จาก unix enviro นี้ เห็นได้ชัดว่าฉันต้องการไดรเวอร์ sql บางตัว!

ฉันหลีกเลี่ยงการไม่สามารถเข้าถึง unixODBC ที่ติดตั้งไว้ล่วงหน้าด้วยการติดตั้ง unixODBC ใหม่บนส่วนหนึ่งของไดรฟ์ที่ฉันควบคุมได้เต็มรูปแบบ ฉันได้ติดตั้ง freeTDS และกำหนดค่าทุกอย่างเพื่อให้สามารถเชื่อมต่อกับเซิร์ฟเวอร์ด้วย isql ได้สำเร็จ เยี่ยมมาก!

ตอนนี้ปัญหาเดียวคือเมื่อฉันรันบรรทัดในโปรแกรม python ของฉัน (ซึ่งใช้ pyodbc) เช่น:

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

ฉันเข้าใจ

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

ฉันคิดว่านี่เป็นเพราะ pyodbc ยังคงมองหาการติดตั้ง unixODBC ดั้งเดิมและไม่ใช่การติดตั้งในเครื่องของฉัน ฉันจึงสงสัยว่า:

ฉันจะกำหนดค่าสคริปต์ให้ค้นหาการติดตั้ง unixODBC ในเครื่องของฉันแทนการติดตั้งบนไดรฟ์หลักได้อย่างไร


person matrix10657    schedule 24.10.2011    source แหล่งที่มา


คำตอบ (3)


pyodbc นั้นยุ่งยากในการติดตั้งในการตั้งค่าแบบกำหนดเอง คุณต้องแก้ไขสคริปต์ setup.py เพื่อค้นหา unixODBC จากตำแหน่งที่คุณกำหนดเองโดยเพิ่มสิ่งที่ต้องการ

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

ไปที่ฟังก์ชัน get_compiler_settings

person tuomur    schedule 24.10.2011
comment
คุณช่วยอธิบายรายละเอียดหน่อยได้ไหม? ฉันไม่เคยยุ่งกับ setup.py เลยและฉันไม่ค่อยแน่ใจว่ากำลังทำอะไรอยู่ - person matrix10657; 25.10.2011
comment
ขอบคุณ @eclaird ฉันประสบปัญหาเดียวกันนี้ใน OS X โดยที่ Apples รวม iODBC ไว้ด้วย แต่ใช้งานไม่ได้กับเวอร์ชัน MSSQL ที่ฉันต้องเชื่อมต่อ ฉันมีปัญหาในการทำให้ pyodbc สร้างเทียบกับการติดตั้ง odbc อื่น แต่โซลูชันของคุณใช้งานได้อย่างมีเสน่ห์ =) - person Justin; 28.06.2013
comment
สิ่งนี้ยังคงใช้งานได้กับ pyodbc 3.0.7 (ฉันเดาว่า) สำหรับฉันแทนที่การเลือกด้วย usr เนื่องจากฉันเป็นประเภทเบียร์มากกว่า ;-) และแน่นอนว่าในคำตอบของ snorris เปลี่ยนการตั้งค่าไลบรารีเป็น 'odbc' ภายใน elif sys แพลตฟอร์ม == ส่วน 'ดาร์วิน' หลังจากทำเช่นนั้น ฉันสามารถพูดคุยกับ PostgreSQL ผ่าน ODBC ได้ - person Dilettant; 19.04.2014

ขอบคุณสำหรับคำตอบข้างต้น - ทำให้ฉันแก้ไข get_compiler_settings ใน setup.py เพื่อบอกว่าอย่าใช้ iodbc เริ่มต้น

สิ่งที่ใช้ได้ผลสำหรับฉัน (OS X 10.9, pyodbc 3.0.7) คือ:

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

ปัญหาอาจเป็นเพราะมันดูในไฟล์ ini ส่วนกลาง คุณสามารถกำหนดตำแหน่งที่จะค้นหาไฟล์ odbc.ini และ odbcinst.ini ได้โดยกำหนด ODBCSYSINI=/path/to/location/of/inifiles

person Nick Gorham    schedule 01.11.2011