Foros del Web » Programando para Internet » Python »

Auxilio

Estas en el tema de Auxilio en el foro de Python en Foros del Web. Buenas, antes q nada debo aclararles no tengo muy en claro el diseño de BD. Estaría debutando en el tema. Dicho esto paso a contarles ...
  #1 (permalink)  
Antiguo 25/11/2014, 13:30
 
Fecha de Ingreso: noviembre-2014
Ubicación: S. M. de Tuc.
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
Auxilio

Buenas, antes q nada debo aclararles no tengo muy en claro el diseño de BD. Estaría debutando en el tema. Dicho esto paso a contarles a ver si me dan una mano. Debo hacer un BD que sea capaz de administrar las propiedades en alquiler de un edificio que cuenta con cocheras, deptos. y locales comerciales. Entonces pensé en las siguientes entidades: propiedad -tabla hijo- (prop (pk), fh(fk de monto), dni(fk de contrato)), contrato -tabla padre- (dni(pk), vencimiento (date), nomap(varchar), antigüedad (int)) y monto (fh (pk), importe float). No se si voy bien con el diseño... Que les parece? La idea es que ademas de poder emitir los comprobantes de pago, sea capaz de lanzar reportes gerenciales (cantidad de propiedades ocupadas/desocupadas, cantidad de deudores (quienes son, cuanto deben) y clientes fidelizados (con la antigüedad se puede saber si son inquilinos de hace muchos años o no).

Una vez hecho esto me lanza los siguientes errores:

/usr/bin/python -u "/home/vale/python/mysql prop"
Ingrese el codigo del contrato (DNI):55555500
/home/vale/python/mysql prop:14: Warning: Field 'nomap' doesn't have a default value
cursor.execute(query)
/home/vale/python/mysql prop:14: Warning: Field 'vencimiento' doesn't have a default value
cursor.execute(query)
/home/vale/python/mysql prop:14: Warning: Field 'antiguedad' doesn't have a default value
cursor.execute(query)
Ingrese el vencimiento del contrato sin espacios ni guiones (formato aammdd):150101
Traceback (most recent call last):
File "/home/vale/python/mysql prop", line 34, in <module>
run_query(query)
File "/home/vale/python/mysql prop", line 14, in run_query
cursor.execute(query)
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry '0' for key 'PRIMARY'")

Estoy usando mysql 5.5, python2.7, y DrPython como GUI.

Si me podrían dar una mano se los agradecería en el alma!!!

Desde ya muchas gracias =)
  #2 (permalink)  
Antiguo 25/11/2014, 13:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Auxilio

Todos esos errores son de Python, no de MySQL... Si hay errores a nivel manejo de consultas en SQL, deberías analizarlas punto a punto, pero lo que sea programacion no es tema de este foro.
Aqui solo analizamos SQL y estructura de datos.

Muevo el post al foro de Python para que comiencen a ayudarte quienes entiendan eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/11/2014, 16:39
 
Fecha de Ingreso: noviembre-2014
Mensajes: 50
Antigüedad: 10 años
Puntos: 0
Respuesta: Auxilio

Yo estoy haciendo algo bastante parecido en Pyhton.Para cuando tenes que terminar eso?
  #4 (permalink)  
Antiguo 25/11/2014, 16:57
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Auxilio

El erro de hecho es de MySQL

Código error:
Ver original
  1. Duplicate entry '0' for key 'PRIMARY'

Sin ver ni un poco de código poco se puede hacer.
__________________
Grupo Telegram Docker en Español
  #5 (permalink)  
Antiguo 25/11/2014, 20:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Auxilio

Lo pasé acá porque aparentemente la construcción de las consultas sería dinámica.
En cualquier caso si hay clave duplicada es error de datos desde la aplicación, y es altamente probable que ni siquiera esté validando errores o excepciones.
No hay fallo de MySQL estrictamente hablando, porque MySQL rechaza el INSERT por esa duplicidad, y eso no es un error sintáctico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 25/11/2014, 20:28
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Auxilio

Claro, por eso le pedí código, pero bien puedo haber omitido un autoincremental, ¿no?
__________________
Grupo Telegram Docker en Español
  #7 (permalink)  
Antiguo 26/11/2014, 09:19
 
Fecha de Ingreso: noviembre-2014
Ubicación: S. M. de Tuc.
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
Respuesta: Auxilio

Ya descubrí el error. En realidad ahora lo q me interesa saber es como diseñar la base de datos.
Debo hacer un BD que sea capaz de administrar las propiedades en alquiler de un edificio que cuenta con cocheras, deptos. y locales comerciales. Entonces pensé en las siguientes entidades: propiedad -tabla hijo- (prop (pk), fh(fk de monto), dni(fk de contrato)), contrato -tabla padre- (dni(pk), vencimiento (date), nomap(varchar), antigüedad (int)) y monto (fh (pk), importe float). No se si voy bien con el diseño... Que les parece? La idea es que ademas de poder emitir los comprobantes de pago, sea capaz de lanzar reportes gerenciales (cantidad de propiedades ocupadas/desocupadas, cantidad de deudores (quienes son, cuanto deben) y clientes fidelizados (con la antigüedad se puede saber si son inquilinos de hace muchos años o no)).
Les agradecería q me den una mano xfa xfa xfaaa

Etiquetas: clave, diseño, mysql, referencial, tablasmysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:56.