2010-05-20 53 views

Trả lời

4

Câu hỏi khá mơ hồ, phụ thuộc rất nhiều vào các trường hợp sử dụng.

Thông thường bạn sẽ chỉ serialize nó và chèn nó bất cứ nơi nào nó là cần thiết, nhưng nếu bạn cần dict mình là "cơ sở dữ liệu giống như", sau đó bạn có thể sử dụng một trong many of the available key/value stores for Python

4

Nếu dict trực tiếp tương ứng vào một bảng cơ sở dữ liệu, sau đó bạn nên thiết lập một bảng có lược đồ chứa hai cột - keyvalue. Sau đó, đối với mỗi phần tử của dict, chỉ cần chèn nó vào cơ sở dữ liệu, hoặc cập nhật nó nếu khóa đã sẵn sàng, v.v.

Nếu không, bạn có thể sử dụng pickle để sắp xếp hàng loạt thành chuỗi và sau đó bạn có thể lưu chuỗi vào DB. Nhưng nói chung tôi sẽ không khuyên bạn nên giải pháp này vì bạn không thể truy vấn dữ liệu được tuần tự hóa.

14

Nếu bạn không đặc biệt quan tâm đến việc sử dụng cơ sở dữ liệu SQL truyền thống, chẳng hạn như MySQL, bạn có thể xem xét cơ sở dữ liệu tài liệu không có cấu trúc nơi tài liệu tự động ánh xạ tới từ điển python, ví dụ MongoDB. MongoDB python bindings cho phép bạn chỉ chèn các dicts vào DB và truy vấn chúng dựa trên các giá trị trong dict. Xem ví dụ: mã bên dưới từ số tutorial:

>>> from pymongo import Connection 
>>> connection = Connection() 
>>> db = connection['test-database'] 
>>> import datetime 
>>> post = {"author": "Mike", 
...   "text": "My first blog post!", 
...   "tags": ["mongodb", "python", "pymongo"], 
...   "date": datetime.datetime.utcnow()} 
>>> posts = db.posts 
>>> posts.insert(post) 
ObjectId('...') 
>>> posts.find_one({"author": "Mike"}) 
{u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']} 
+0

+1. Làm thế nào mát mẻ! Cảm ơn ví dụ. – bernie

+0

heh, vâng nó khá thú vị;). Gần đây tôi đã bắt đầu chơi xung quanh với MongoDB và nó thực sự khá tốt đẹp vì nó là mô hình tài liệu dựa trên JSON nhị phân. Kể từ khi tôi nghe giống như một thương mại ở đây, heck thậm chí còn có một serivce lưu trữ trực tuyến miễn phí (miễn phí cho 16MB): https://mongohq.com/home: p – catchmeifyoutry

6

"Tốt nhất" là gây tranh cãi.
Nếu bạn cần một DBMS, sqlite được xây dựng trong; vì vậy nó có thể được coi là một phương pháp dễ dàng hơn so với một số cách khác được đề cập.

import sqlite3 
conn = sqlite3.connect(':memory:') 
c = conn.cursor() 
c.execute("create table kv (key text, value integer);") 
# <sqlite3.Cursor object at 0x00C62CE0> 
d = {'a':1,'b':2} 
c.executemany("insert into kv values (?,?);", d.iteritems()) 
# <sqlite3.Cursor object at 0x00C62CE0> 
c.execute("select * from kv;").fetchall() 
# [(u'a', 1), (u'b', 2)] 
Các vấn đề liên quan