2015-02-17 21 views
15

Tôi đang cố gắng kết nối với Máy chủ SQL bằng Pypyodbc trên Mac và tôi nhận được lỗi sau:Pypyodbc: Không thể mở lỗi 'FreeTDS': không tìm thấy tệp ') khi cố gắng kết nối với máy chủ SQL

pypyodbc.DatabaseError: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found") 

freetds tôi đã cài đặt và unixodbc

brew install unixodbc 
brew install freetds 

và đây là chuỗi kết nối của tôi với dữ liệu giả:

connection_String = "Driver=FreeTDS;Server=123.12.12.12;tds_version=7.2;Database=db_db;Uid=username:pwd=password:port=1433" 
+0

[Điều này SO gửi câu trả lời bạn câu hỏi?] (Http://stackoverflow.com/questions/11678696/sql-server-python-and-os-x) – AlexLordThorsen

+0

Không phải là một anh chàng Mac, nhưng trong khác * Các hệ thống nix, tôi muốn kiểm tra xem các tệp FreeTDS có nằm trong LD_LIBRARY_PATH – dgraves

+0

Câu trả lời mà tôi đã đăng [trên một câu hỏi trùng lặp] (https://stackoverflow.com/a/46793344/648162) có thể hữu ích nếu bạn gặp sự cố này . – qris

Trả lời

6

Đầu tiên, bạn có thể sử dụng pymssql không yêu cầu cấu hình unixODBC, đây là vấn đề ở đây.

Để cấu hình unixODBC với freetds, làm như sau: http://www.unixodbc.org/doc/FreeTDS.html

Có một công cụ mà đi kèm với freetds, TSQL. Sử dụng nó để kiểm tra chuỗi kết nối của bạn. Đó là một công cụ xương rất trần và một cái gì đó của một nỗi đau. : -/

Cuối cùng, có một câu hỏi tương tự với các vấn đề khác trong StackOverflow: How do I configure pyodbc to correctly accept strings from SQL Server using freeTDS and unixODBC?

+0

liên kết để cấu hình unixODBC với FreeTDS là rất tốt, ngoại trừ không có "libtdsodbc.so" ở bất kỳ đâu trên OS X – andrei

+0

Trong Archlinux, nó là một phần của gói có tên "freetds". Có thể bạn có thể cài đặt thư viện đó. – Javier

+0

@andrei, một trường đại học đã sử dụng https://brew.sh/ để cài đặt thư viện. – Javier

-1

Đây là một hack, khả năng tốn kém, và có lẽ phần nào nằm ngoài phạm vi của SO, nhưng tôi đã làm việc trên chính xác vấn đề này trong một tuần cho đến khi tôi quỳ xuống dưới.

Giải pháp của tôi là lấy một phiên bản AWS dựa trên Windows, đặt các tập lệnh Python tương tác với cơ sở dữ liệu MSSQL trên đó và chuyển các tệp từ máy từ xa sang máy tính của tôi qua Google Drive. Làm việc như một say mê.

+2

Có thực sự là không cần cho bất cứ điều gì như thế. : -/ – Javier

+3

Điều này thật khủng khiếp nhưng đôi khi bạn phải hoàn thành công việc! – Matt

10

Kiểm tra /etc/odbcinst.ini của bạn hoặc nó có thể là dưới /etc/unixODBC/odbcinst.ini

Trong chuỗi kết nối của bạn, bạn có một cái gì đó như thế này "DRIVER = freetds" cần phải có một mục trong tập tin đó như sau. Bạn có thể cần phải thay đổi vị trí trình điều khiển của bạn.

[FreeTDS] 
Description    = FreeTDS unixODBC Driver 
Driver   = /usr/lib64/libtdsodbc.so.0 
Setup   = /usr/lib64/libtdsodbc.so.0 
UsageCount    = 1 
+1

libtdsodbc.so.0 không tồn tại trên OSX – andrei

Các vấn đề liên quan