2008-09-27 15 views
22

Tôi đã nhìn thấy một số mô-đun postgresql cho python như pygresql, pypgsql, psyco. Hầu hết trong số họ là Python DB API 2.0 tuân thủ, một số không được phát triển tích cực nữa. Bạn đề xuất mô-đun nào? Tại sao?Mô-đun PostgreSQL Python. Tốt nhất?

+1

[Bài viết này] (https: // wiki .postgresql.org/wiki/Python) cung cấp tổng quan về tất cả các tùy chọn và phải được cập nhật. Lưu ý cho 'Psycopg2' nói" _Trình điều khiển python phổ biến nhất, cần thiết cho hầu hết các Python + Postgres frameworks_ ". – J0ANMM

+0

Thật vậy, @ J0ANMM. Tôi nên cập nhật các bài viết để xác nhận rằng câu trả lời tôi đã chọn (gần 10 năm trước bây giờ) vẫn được cập nhật. Cảm ơn bạn. – jmissao

Trả lời

15

psycopg2 có vẻ là phổ biến nhất. Tôi chưa bao giờ gặp rắc rối với nó. Trên thực tế cũng có một giao diện Python thuần túy cho PostgreSQL, được gọi là bpgsql. Tôi sẽ không khuyên bạn nên nó trên psycopg2, nhưng nó gần đây đã trở thành đủ khả năng để hỗ trợ Django và rất hữu ích nếu bạn không thể biên dịch C module.

+2

Một tùy chọn tinh khiết-Python khác: pg8000 (http://pybrary.net/pg8000/) – bernie

1

Psycopg1 được biết đến với hiệu suất tốt hơn trong môi trường có nhiều luồng (như ứng dụng web) so với Psycopg2, mặc dù không được duy trì. Cả hai đều được viết tốt và đá rắn, tôi muốn chọn một trong hai tùy thuộc vào trường hợp sử dụng.

+1

Psycopg 1 là khá lỗi thời: việc sử dụng nó hoàn toàn không được khuyến khích. – piro

2

Tôi đề xuất Psycopg trên Psycopg2 kể từ lần đầu tiên có vẻ có vẻ hợp lý hơn một chút. Ít nhất là trong kinh nghiệm của tôi. Tôi có một ứng dụng chạy 24/7 và đôi khi tôi đã nhận được tai nạn ngẫu nhiên bộ nhớ (đôi miễn phí hoặc lỗi tham nhũng) từ Psycopg2. Không có gì tôi có thể gỡ lỗi nhanh chóng hoặc dễ dàng vì nó không phải là lỗi Python mà là lỗi C. Tôi vừa chuyển sang Pyscopg và sau đó tôi không gặp bất kỳ sự cố nào.

Ngoài ra, như đã nói trong một bài đăng khác, bpgsql có vẻ là một lựa chọn rất tốt. Nó ổn định và dễ sử dụng vì bạn không cần phải biên dịch nó. Điều xấu nhất là thư viện không phải là chủ đề an toàn.

Pygresql có vẻ đẹp, có cách trực tiếp hơn để truy vấn cơ sở dữ liệu bằng thư viện này. Nhưng tôi không biết cái này ổn định như thế nào.

+1

Như đã nêu trong một bình luận khác, có rất nhiều lỗi trong Psycopg 1 đã được sửa trong Psycopg 2 trong khoảng 4 năm phát triển. Vui lòng báo cáo bất kỳ lỗi nào trong danh sách gửi thư. – piro

0

Tôi chỉ sử dụng psycopg2 và không có vấn đề gì với điều đó.

0

Tôi đã sử dụng pg8000 mà không gặp bất kỳ sự cố nào trong 3 năm qua. Đó là uptodate và có sẵn trên pypi và hoạt động trên cả python2 và python3. Bạn có thể sử dụng "pip install pg8000" để nhanh chóng có được nó (đừng quên sử dụng --proxy = yourproxy: yourport nếu bạn đang đứng sau tường lửa).

Nếu bạn lo lắng về an toàn luồng, nó cũng cung cấp điểm số cho an toàn luồng (xem: http://pybrary.net/pg8000/dbapi.htmlhttps://www.python.org/dev/peps/pep-0249/ cho các định nghĩa về mức độ an toàn luồng khác nhau) (mặc dù tôi chưa có chủ đề nào được sử dụng với psql).

+1

Liên kết đến dự án - https://pypi.org/project/pg8000 –

0

Theo kinh nghiệm của tôi, psycopg2 là thư viện được sử dụng nhiều nhất cho việc này. Như bạn đã nói, đó là tuân thủ DB API 2.0, mang đến một giao diện vững chắc để làm việc.

Đối với những người tìm ra API tiêu chuẩn để được một chút quá dài dòng và khó có thể làm việc với, tôi đã thực hiện một thư viện nhỏ có thể giúp:

https://github.com/hugollm/rebel

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