¿Cuál es la mejor manera de almacenar y recuperar un dict python en una base de datos?Python, almacena un dict en una base de datos
Respuesta
Pregunta bastante vaga, depende mucho de los casos de uso.
Normalmente usted acaba de serializarlo e insertarlo donde fuera necesario, pero si usted necesita el dict a sí misma como "base de datos-como", entonces usted puede utilizar una de many of the available key/value stores for Python
Si el dict corresponde directamente En una tabla de base de datos, debe configurar una tabla con un esquema que contenga dos columnas: key
y value
. Luego, para cada elemento del dict, simplemente insértelo en la base de datos o actualícelo si la clave ya está en su lugar, etc.
De lo contrario, podría usar pickle para serializar el dict a una cadena, y luego podría simplemente guarda la cadena en la base de datos. Pero, en general, no recomendaría esta solución ya que no puede consultar los datos serializados.
Si no está específicamente interesado en utilizar una base de datos SQL tradicional, como MySQL, podría buscar en las bases de datos de documentos no estructurados donde los documentos se asignan naturalmente a los diccionarios python, por ejemplo MongoDB. El MongoDB python bindings le permite simplemente insertar dictados en el DB y consultarlos en función de los valores del dict. Véase por ejemplo el código de abajo de la 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']}
+1. ¡Que guay! Gracias por el ejemplo. – bernie
je, sí, es genial;). Recientemente comencé a jugar con MongoDB y es bastante agradable ya que su modelo de documento se basa en Binary JSON. Ya que estoy sonando como un comercial aquí, diablos hay incluso un servicio gratuito de alojamiento en línea (gratis por 16 MB): https://mongohq.com/home: p – catchmeifyoutry
"mejor" es discutible.
Si necesita un DBMS, sqlite está integrado; por lo que podría considerarse un método más fácil que algunas de las otras formas mencionadas.
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)]
- 1. ¿Almacena datos de imagen en una base de datos MySQL?
- 2. ¿Dónde almacena contraseñas de base de datos?
- 3. Python: Lista de dict, si existe incremente un valor dict, si no agrega una nueva dict
- 4. Python: ordenar este diccionario (dict en dict)
- 5. Python, suma de comprobación de un dict
- 6. Cómo envolver un dict python?
- 7. # estructura de datos que almacena C en una base de datos SQL
- 8. Joda time DateTime almacena incorrectamente en la base de datos
- 9. ¿Cómo se almacena un trie en una base de datos relacional?
- 10. Creando un nuevo dict en Python
- 11. python dict set min_size
- 12. ¿Dónde almacena su conexión de base de datos?
- 13. ¿Almacena una matriz de javascript que contiene objetos en una base de datos MYSQL?
- 14. ¿dónde almacena MySQL los archivos de la base de datos?
- 15. Convirtiendo JSON en el dict de Python
- 16. ¿Hay alguna manera de establecer múltiples valores predeterminados en un dict de Python usando otro dict?
- 17. Usando un dict de Python para una sentencia SQL INSERT
- 18. Agregar a un dict de listas con una comprensión dict
- 19. Base de datos de Python
- 20. Python: ¿cómo se almacena una matriz dispersa usando Python?
- 21. función autocompletar-like con un dict python
- 22. Python dict incomprensión
- 23. Almacenar un HashMap en una base de datos SQL
- 24. Lista de tuplas de dict en Python
- 25. .net DateTime MaxValue es diferente una vez que se almacena en la base de datos
- 26. Python: Ampliación de la clase 'dict'
- 27. Cuando es apropiado utilizar una base de datos, en Python
- 28. Accediendo a una base de datos JET (.mdb) en Python
- 29. Convirtiendo Python dict a kwargs?
- 30. Cómo la base de datos almacena datos internamente en B-Tree/B + Tree
¿Aparte de serializarlo? –