Какой лучший способ хранить и извлекать питон python в базе данных?
Python, сохраните файл dict в базе данных
Ответ 1
Если вы не заинтересованы в использовании традиционной базы данных SQL, такой как MySQL, вы можете посмотреть в неструктурированные базы данных документов, где документы, естественно, сопоставляются с словарями python, например MongoDB. MongoDB привязки python позволяют просто вставлять dicts в БД и запрашивать их на основе значений в dict. См., Например, следующий код из 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']}
Ответ 2
"Лучший" спорный.
Если вам нужна СУБД, встроен sqlite; поэтому его можно считать более простым методом, чем некоторые другие упомянутые способы.
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)]
Ответ 3
Довольно неопределенный вопрос, сильно зависит от вариантов использования.
Обычно вы просто сериализуете его и вставляете туда, где это необходимо, но если вам нужно, чтобы сам dict был "подобен базе данных", вы можете использовать один из многие доступные хранилища ключей/значений для Python
Ответ 4
Если dict напрямую соответствует таблице базы данных, тогда вы должны настроить таблицу со схемой, содержащей два столбца - key
и value
. Затем для каждого элемента dict просто вставьте его в базу данных или обновите его, если ключ уже на месте и т.д.
В противном случае вы можете использовать pickle для сериализации dict в строке, а затем вы можете просто сохранить строку в БД. Но в целом я бы не рекомендовал это решение, так как вы не можете запросить сериализованные данные.