2012-05-30 14 views
6

Mi pregunta es cómo crear una base de datos simple en python. Mi ejemplo es:Base de datos de Python

User = { 
'Name' : {'Firstname', 'Lastname'}, 
'Address' : {'Street','Zip','State'}, 
'CreditCard' : {'CCtype','CCnumber'}, 
} 

Ahora puede actualizar la información del usuario muy bien, pero ¿cómo puedo

  1. agregar más usuarios a esta estructura de datos. Un diccionario de diccionarios?
  2. Permitir a los usuarios tener más de una tarjeta de crédito, una relación de muchos a uno

Gracias por cualquier respuesta, he estado tratando de envolver mi cabeza alrededor de esto por un tiempo

+2

El verdadero problema es que este enfoque en memoria se vuelve desordenado rápidamente. Si tiene un diccionario de usuarios, ¿qué usa para las claves? ¿Qué pasa si hay llaves duplicadas? etc. –

+0

Por cierto, puede interesarte esta [lista de bases de datos relacionadas con Python] (http://wiki.python.org/moin/DatabaseInterfaces#Native_Python_Databases), particularmente las nativas de Python. – kojiro

Respuesta

10

también te pueden interesar en SQLAlchemy. Hace que una base de datos real, como SQLite o MySQL, funcione más como las clases de Python.

4

Puede crear una base de datos simple en Python con sqlite, aquí hay un tutorial básico para ello.

+1

Estoy seguro de que sería mucho más fácil, pero mi profesor es un poco molesto y quiere que aprendamos de la manera difícil –

5

La mayoría de las tiendas clave-valor que he visto son un diccionario de diccionarios (como mongo *) o un diccionario de cadenas (como redis). Hay ventajas y desventajas para ambos enfoques. No sé lo que quiere, así que voy a dar la respuesta más simple: Ir con una lista de diccionarios:

Users = [] 
Users.append({ 
    'Name' : {'Firstname', 'Lastname'}, # Are these sets? 
    'Address' : {'Street','Zip','State'}, 
    'CreditCard' : {'CCtype','CCnumber'}, 
}) 

* OK, para ser justos, Mongo es más como un diccionario de cuerdas mágicas . Es json, pero las búsquedas se manejan internamente, por lo que puedes tratarlo como un diccionario de estructuras de datos arbitrarias (pero json-serializables).

4

1. Agregue más usuarios a esta estructura de datos. Un diccionario de diccionarios?

Una lista de diccionarios.

[{'name': ...}, {'name': ...}] 

2. Permitir a los usuarios tener más de una tarjeta de crédito, una relación de muchos a uno

una lista.

{'name': ..., 'creditcard': [['type', 'number'], ['type', 'number']]} 
+1

Oh genial, gracias, solo necesito encontrar una manera de crear usuarios basados ​​en esta estructura. Gracias –

4

Cree una clase User para almacenar la información. La clase puede tener un atributo creditcards que es un list de CreditCard instancias de clase que se agregan a las instancias de clase cuando se crean o más tarde utilizando un método de clase que puede definir. Otros métodos pueden actualizar este (y otros) atributos según sea necesario cuando se los llama. Se llama programación orientada a objetos (OOP).

Las instancias se pueden almacenar en la memoria en instancias de una variedad de clases de contenedores incorporados, como list sy dict s. Se pueden almacenar en el disco y recuperar más tarde utilizando los módulos pickle, shelve, json y sqlite3, solo por nombrar algunos.

No está tratando de hacer nada que no se haya hecho antes, lo cual es una buena noticia, ya que significa que hay mucho software listo para usar a su disposición, pero tendrá que leer sobre en la documentación y probablemente haga algunas preguntas más hasta que haya aprendido cómo usarlas, entonces puede comenzar a responder preguntas. ;-)

¡Bienvenido a Python!

Cuestiones relacionadas