2012-01-17 14 views
7

Có nhiều bài đăng nằm rải rác trên StackOverflow, liên quan đến các mô-đun Python được sử dụng để lưu và tải dữ liệu.Có sẵn các mô-đun Python nào để lưu trữ và tải dữ liệu?

Bản thân tôi cũng quen thuộc với jsonpickle và tôi cũng đã nghe nói về pytables. Có lẽ có nhiều hơn ngoài kia. Ngoài ra, mỗi mô-đun có vẻ phù hợp với một mục đích nhất định và có giới hạn riêng của nó (ví dụ: tải danh sách lớn hoặc từ điển với dưa chuột cần độ tuổi nếu hoạt động). Do đó nó sẽ được tốt đẹp để có một cái nhìn tổng quan về khả năng.

bạn có thể sau đó giúp cung cấp một danh sách toàn diện các module sử dụng để lưu và tải dữ liệu, mô tả cho mỗi mô-đun:

  • những gì các mục đích chung của các mô-đun là,
  • giới hạn của nó,
  • tại sao bạn sẽ chọn mô-đun này hơn những người khác?

Trả lời

7

marshal:

  • Ưu điểm:

    • có thể đọc và ghi giá trị Python trong một định dạng nhị phân. Do đó, nó nhanh hơn nhiều so với pickle (dựa trên ký tự).
  • Nhược điểm:

    • Không phải tất cả các loại đối tượng Python được hỗ trợ. Một số loại không được hỗ trợ như lớp con của nội trang dựng sẵn sẽ xuất hiện để sắp xếp và sắp xếp chính xác
    • Không có ý định bảo mật chống lại dữ liệu được xây dựng sai hoặc độc hại.
    • Các bảo trì Python bảo lưu quyền sửa đổi các định dạng soái theo những cách không tương thích ngược nên có nhu cầu

shelve

  • Ưu điểm:

    • Giá trị trong một kệ có thể chủ yếu tùy ý Python đối tượng
  • Nhược điểm:

    • Không hỗ trợ đồng thời đọc/ghi truy cập vào các đối tượng có ngăn

ZODB (được đề xuất bởi @Duncan)

  • Pro:

    • suốt kiên trì
    • giao dịch đầy đủ hỗ trợ
    • pluggable lưu trữ
    • kiến ​​trúc mở rộng
  • Nhược điểm

    • không phải là một phần của thư viện chuẩn.
    • không thể (dễ dàng) để tải lại dữ liệu trừ khi mô hình đối tượng python gốc được sử dụng cho sự bền bỉ đã có sẵn (xem xét những khó khăn phiên bản và di chuyển dữ liệu)
+0

Thêm vào so sánh đối sánh: "người bảo trì Python bảo lưu quyền sửa đổi định dạng nguyên soái theo các cách không tương thích ngược nếu cần phát sinh" –

+0

@JanneKarila Added, thanks. – qiao

+1

Bạn có thể thêm ZODB (http://www.zodb.org/documentation/tutorial.html) làm thứ ba. Pro: minh bạch kiên trì, hỗ trợ giao dịch đầy đủ, lưu trữ có thể cắm được, kiến ​​trúc có thể mở rộng. Nhược điểm: không phải là một phần của thư viện chuẩn. – Duncan

4

Có một overview các module dữ liệu kiên trì lib chuẩn.

+2

hầu như không phải là câu trả lời, chứ không phải những gì OP yêu cầu! xem http: // stackoverflow.com/faq # deletion –

+0

@DonQuestion Có một nguồn tốt để tìm hiểu về các mô-đun cho sự kiên trì dữ liệu trong lib chuẩn, nơi bạn có thể tìm thấy ưu và khuyết điểm của chúng, vậy tại sao bạn phải viết lại những gì đã được viết trong tài liệu? – Gandaro

+0

Để trả lời câu hỏi bạn phải đọc nó. OP ám chỉ rằng ông đã xem xét một số giải pháp kiên trì và nhận thức được điểm yếu của họ. Anh ta không ** yêu cầu liên kết đến các mô-đun kiên trì chuẩn của python, nhưng đối với một khuyến nghị được giáo dục về một số linh hồn và ** tại sao ** chúng tôi sẽ đề xuất chúng với ưu/contras và các ca sử dụng chính của chúng. Tôi không thấy điều này trong câu trả lời của bạn, cũng như trong liên kết được cung cấp. Nếu bạn làm theo liên kết gợi ý của tôi, bạn sẽ nhận ra rằng câu trả lời của bạn là không đủ. Luôn ghi nhớ rằng những người dùng khác trong tương lai có thể có câu hỏi tương tự. –

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