Không có cách nào để lưu trữ một đối tượng trong một tệp (cơ sở dữ liệu) mà không cần tuần tự hóa nó. Nếu dữ liệu cần di chuyển từ một tiến trình này sang tiến trình khác hoặc đến một máy chủ khác, nó sẽ cần phải được tuần tự hóa ở một dạng nào đó để truyền đi. Vì bạn đang hỏi về MongoDB, dữ liệu sẽ được tuần tự hóa hoàn toàn dưới dạng nào đó để được lưu trữ trong cơ sở dữ liệu MongoDB. Khi sử dụng MongoDB, nó là BSON.
Nếu bạn đang thực sự hỏi liệu có cách nào để lưu trữ một dạng thô của đối tượng Python trong tài liệu MongoDB hay không, bạn có thể chèn trường Binary
vào tài liệu có thể chứa bất kỳ dữ liệu nào bạn muốn . Nó không thể truy vấn trực tiếp dưới bất kỳ hình thức nào, do đó bạn có thể mất rất nhiều lợi ích khi sử dụng cơ sở dữ liệu tài liệu NoSQL như MongoDB.
>>> from pymongo import MongoClient
>>> client = MongoClient('localhost', 27017)
>>> db = client['test-database']
>>> coll = db.test_collection
>>> # the collection is ready now
>>> from bson.binary import Binary
>>> import pickle
>>> # create a sample object
>>> myObj = {}
>>> myObj['demo'] = 'Some demo data'
>>> # convert it to the raw bytes
>>> thebytes = pickle.dumps(myObj)
>>> coll.insert({'bin-data': Binary(thebytes)})
Không rõ ràng bạn đang cố gắng làm gì, những gì bạn đã thử và những gì không hiệu quả. Vui lòng chỉnh sửa câu hỏi để bao gồm các chi tiết hữu ích đó. :) – WiredPrairie
Nếu bạn làm điều đó cho hiệu suất, [điểm chuẩn này] (http://kovshenin.com/2010/pickle-vs-json-which-is-faster/) có thể làm bạn ngạc nhiên. – georg
@ thg435: Cảm ơn bạn đã liên kết, tôi sẽ ghi nhớ một dự án mà I/O sẽ quan trọng hơn cho việc thực hiện dự án của tôi! – chiffa