2012-01-11 45 views
18

Tôi tương đối mới với cơ sở dữ liệu, thực hiện truy vấn SQL, v.v. Hiện tại tôi đang sử dụng MS SQL Server cho DB của tôi (đó là những gì chúng tôi sử dụng tại nơi làm việc) câu trả lời cho câu hỏi của tôi có thể tổng quát hơn chỉ dành cho DB cụ thể đó.pymssql so với pyodbc so với adodbapi so với ...

Tôi thực hiện một công việc tốt bằng cách sử dụng ứng dụng giao diện DB (trong trường hợp này là SQL Server Management Studio), nhưng tôi cũng thực hiện một số công việc thông qua các tập lệnh python. là những trang web mà người dùng có thể gửi truy vấn vào DB.

Tôi đã sử dụng mô-đun pymssql để truy vấn vào & ghi vào DB từ python. Nhưng có một vài vấn đề khó chịu mà tôi đang gặp phải. (Có vẻ như pymssql không thể sử dụng các bảng tạm thời, và tôi cũng đã gặp rắc rối với "autocommit", nhưng đó có thể là lỗi của riêng tôi.)

Vì vậy, không biết gì về điều này, tôi chỉ muốn một hương vị của những gì hướng tôi nên đi. Theo như tôi có thể nói, tôi có thể một trong hai:

  • sử dụng pymssql, mà nói trực tiếp đến các máy chủ MS SQL
  • sử dụng pyodbc, đòi hỏi cài đặt freetds & unixODBC đầu tiên, và thiết lập chúng
  • sử dụng mô-đun adodbapi và tôi không chắc chắn những yêu cầu nào là cần thiết ở đây.
  • một phương pháp khác ??

Thing, tôi không HOÀN TOÀN nhận những gì ODBC làm. Nó có vẻ giống như một loại "trung gian xác thực", giống như một người trung gian để đảm bảo rằng người dùng là người mà anh ta/cô ấy nói. Và tôi thậm chí còn ít hiểu biết hơn về ADO.

Trong khi pymssql có vẻ là cách dễ nhất để đi, nó cũng có vẻ là một trong những người nghĩ rằng ít cao hơn, và rằng nó cuối cùng sẽ không được chấp nhận. Tôi thích học theo cách "đúng" vì tôi khá bắt đầu với công cụ này.

Vì vậy, tôi đang tìm kiếm một số ý kiến ​​có kiến ​​thức về cách tốt nhất để có được python để nói chuyện với MS SQL Server, và nói chuyện với DB nói chung. Tôi sẽ định nghĩa "tốt nhất" là tốt nhất cho một người sẽ làm những thứ phức tạp vừa phải với nó. (Trong khi tôi mới bắt đầu, đó là điều mà cuối cùng tôi sẽ phải tăng lên một chút.)

Cảm ơn! Mike

Trả lời

16

pyodbc (recommended)

Tôi đã bắt đầu sử dụng mô-đun này cách đây vài tháng và không có khiếu nại cho đến nay. Cộng đồng phát triển có vẻ hoạt động hơn pymssql. Tôi đã không có vấn đề cài đặt cho đến nay (32bit Win XP và 64bit Server 2008 R2). Bạn sẽ có thêm lợi thế mà bạn không bị giới hạn đối với MS SQL Server.

Bạn có thể thấy: http://www.lfd.uci.edu/~gohlke/pythonlibs/ hữu ích nếu bạn đang cài đặt trên cửa sổ.

pymssql

Tôi đã làm việc với các phiên bản 1.x cho khoảng 2,5 năm. Tôi đã có một số vấn đề nhỏ với các giới hạn kích thước cho các đối tượng lớn. Tôi cũng gặp phải vấn đề lớn khi đa luồng (đến mức tôi phải tắt nếu tắt). 1.x được dựa trên các thư viện MS không được chấp nhận.Tuy nhiên, phiên bản gần đây là 2.x và không sử dụng các thư viện không còn được dùng nữa. Thay vào đó nó sử dụng FreeTDS (như pyodbc). Nghe có vẻ hay nhưng tôi chưa thử.

adodbapi

Tôi đã thử chuyển ra pymssql và thay thế nó bằng adodbapi khoảng một năm trước và một số các truy vấn mà làm việc tốt với pymssql thất bại không có lý do rõ ràng. Tôi nhanh chóng bỏ adodbapi một lần nữa.

+3

Như đã thông báo trong tháng 12 năm 2016, pyodbc giờ đây được [chính thức hỗ trợ bởi Microsoft] (https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/sql-server -python-whats-new /). –

9

Từ kinh nghiệm của tôi, PYODBC có một chút vấn đề trong những ngày này. Thứ nhất, nó dường như không quản lý chuỗi unicode đúng hoặc đáng tin cậy. Thứ hai, API là một chút lỗi thời và cụ thể và ít Python DB-API (PEP-249) tuân thủ.

Tôi đang ở giữa quá trình di trú mã dự án sang PYMSSQL, trong khi thử nghiệm của tôi cho đến nay, bao gồm các căn cứ trên cả hai vấn đề trên. Tôi không biết bất kỳ sự phản đối nào với API này vì dường như nó được cập nhật thường xuyên (phiên bản chính vào tháng 10 năm 2013), các tài liệu ít nhiều được cập nhật và tài liệu đang hoạt động.

Đây chỉ là những phát hiện và tiến trình hiện tại của tôi với PYODBC và PYMSSQL. Tất cả có thể thay đổi tất nhiên :)

+2

Có, pyodbc đã trải qua một chút vá lỗi, nhưng nó đã nhận được một số TLC gần đây và bây giờ [chính thức được hỗ trợ bởi Microsoft] (https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/09/ sql-server-python-whats-new /). –

+1

Đầu năm nay (2017) đã có đề xuất ngừng pymssql, xem [Đề xuất ngừng pymssql có lợi cho pyodbc] (https://github.com/pymssql/pymssql/issues/477) và [pymssql vs pyodbc] (https://groups.google.com/forum/#!topic/pymssql/CLXHtLKBWig). Họ quyết định tiếp tục, nhưng liên kết cuối cùng cho thấy cộng đồng đằng sau pymssql đang đấu tranh để tìm người bảo trì. Tôi nghĩ ngay bây giờ pyodbc có vẻ như là một lựa chọn tốt hơn nói chung (có lẽ pymssql vẫn còn tốt hơn tùy thuộc vào nhu cầu của bạn). –

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