Calificación:
  • 1 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problemas JSON y BBDD
#1
Buenas tardes,
Estoy desarrollando un backend para una app, la cual extrae datos de unos ficheros y los almacena en la base de datos de Google Firestore.

La estructura de datos es:

Código:
fecha: {
           registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }
          registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }}
El problema que tengo es que me funciona, y añade los datos a la BBDD, pero solo me crea un registro dentro de fecha, porque cada vez que intento grabar uno nuevo, en vez de "añadir" los datos a continuación, de tal manera que estuviera dentro de fecha, varios registros con su propios datos, lo sobreescribe, quedando solo el ultimo registro.

Se que es un problema a la hora de codificar el JSON; pero por mas vueltas que le doy no soy capaz de sacarlo. Si pudierais echarme una mano ...


Os pongo el codigo de la funcion completo:

Código:
datos2=json.dumps(datos)
   datos=json.loads(datos2)
   puntero = db.collection(u'datos').document(usuario.lower())
   puntero.update({
       fecha: {
           datos[0]:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }}
   })


Muchas Gracias por vuestra ayuda
Responder
#2
Hola, bienvenido.

No conozco cómo funciona Google Firestore, pero si cada registro tiene una clave y un valor, como en un diccionario, entonces estás usando siempre la misma clave y por ende prevalece el último valor que hayas añadido. Por ejemplo, acá:

Código:
fecha: {
           registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }
          registro:{
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               }
}

Tenés dos registros con la misma clave ("registro"). Debería ser "registro1" y "registro2" o cualquier otro nombre en tanto en cuanto sean diferentes.

O tal vez lo más probable es que el valor de "fecha" tenga que ser una lista y no un diccionario. Así:

Código:
fecha: [
           {
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
               },
          {
               u'horainicio': datos[2],
               u'horafin': datos[3],
               u'entidad': datos[4],
               u'direccion': datos[5],
               u'poblacion': datos[6]
         }
]

Nótense los corchetes en vez de llaves.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)