2012-01-17 9 views
7

Hay muchas publicaciones dispersas en StackOverflow, con respecto a los módulos de Python utilizados para guardar y cargar datos.¿Qué módulos de Python disponibles hay para guardar y cargar datos?

Yo mismo estoy familiarizado con json y pickle y también he oído hablar de pytables. Probablemente hay más por ahí. Además, cada módulo parece ajustarse a un propósito determinado y tiene sus propios límites (por ejemplo, cargar una lista grande o un diccionario con pickle toma años si es que funciona). Por lo tanto, sería bueno tener una visión general adecuada de las posibilidades.

Podría entonces ayudar a proporcionar una lista completa de módulos que se utilizan para guardar y cargar datos, que describe para cada módulo:

  • lo que el objetivo general del módulo es,
  • sus límites,
  • ¿Por qué elegirías este módulo sobre otros?

Respuesta

7

marshal:

  • Pros:

    • Puede leer y escribir valores de Python en un formato binario. Por lo tanto, es mucho más rápido que pickle (que se basa en caracteres).
  • Contras:

    • No todos los tipos de objetos de Python son compatibles. Algunos tipos no admitidos, como las subclases de edificios incorporados, aparecerán como mariscales y se marcarán correctamente.
    • No está destinado a ser seguro contra datos erróneos o mal construidos.
    • Los mantenedores de Python se reservan el derecho de modificar el formato Marshal en formas incompatibles hacia atrás en caso de necesidad

shelve

  • Pros:

    • Valores en un estante puede ser esencialmente arbitraria objetos Python
  • Contras:

    • no admite el acceso de lectura/escritura concurrente a los objetos dejados de lado

ZODB (sugerido por @Duncan)

  • Pro:

    • persistencia transparente
    • transacción pleno apoyo
    • almacenamiento conectables
    • arquitectura escalable
  • Contras

    • que no forma parte de la biblioteca estándar.
    • incapaces (fácilmente) para recargar los datos a menos que el modelo de objetos de Python original utilizado por persistir está disponible (en cuenta las dificultades de versión y la portabilidad de datos)
+0

Agregar a Mars Couns: "los desarrolladores de Python se reservan el derecho de modificar el formato del Marshal de maneras incompatibles hacia atrás en caso de necesidad" –

+0

@JanneKarila Agregado, gracias. – qiao

+1

Puede agregar ZODB (http://www.zodb.org/documentation/tutorial.html) como un tercero. Pro: persistencia transparente, soporte completo de transacciones, almacenamiento conectable, arquitectura escalable. Contras: no es parte de la biblioteca estándar. – Duncan

4

Hay un overview de los módulos de persistencia de datos lib estándar.

+2

¡eso no es una respuesta, y no es lo que pidió OP! ver http: // stackoverflow.com/faq # deletion –

+0

@DonQuestion Hay una buena fuente para averiguar sobre los módulos para la persistencia de datos en la lib estándar donde puede encontrar los pros y los contras de ellos, así que ¿por qué tiene que escribir de nuevo solo lo que ya está escrito? en los documentos? – Gandaro

+0

Para responder a una pregunta, debe leerla. El OP insinuó que ya había analizado algunas soluciones de persistencia y que era consciente de sus debilidades. Estaba ** no ** pidiendo un enlace a los módulos de persistencia estándar de Python, pero para una recomendación educada de algunas almas y ** por qué ** las sugeriríamos con pros/contras y sus casos de uso primarios. No veo esto ni en tu respuesta, ni en el enlace provisto. Si sigues mi enlace sugerido, te darás cuenta de que tu respuesta no es suficiente. Siempre tenga en cuenta que otros usuarios futuros pueden tener preguntas similares. –

Cuestiones relacionadas