[Python-es] [SQLObject] dudas con relación one to many relationships
Milton Galo Patricio
minoztro en gmail.com
Dom Mar 18 17:59:54 CET 2007
estimad en s:
Soy muy nuevo en esto de SQLObject {he empezado recién hoy}, y ya
tengo una duda con el funcionamiento de las relaciones de uno es a
mucho, a continuación los describo la estructura de mis tablas y la
forma en la que estoy procediendo:
Lo primero es levantar todo por la consola interactiva de python
>>> from sqlobject import *
>>> import sys, os
>>> db_archivo=os.path.abspath('ejemplo.db')
>>> conexion='sqlite:%s'%(db_archivo)
>>> conexion_real=connectionForURI(conexion)
>>> sqlhub.processConnection=conexion_real
>>> class Persona(SQLObject):
... primer_nombre=StringCol()
... inicial=StringCol(length=1,default=None)
... apellido=StringCol()
... direccion=MultipleJoin('Direccion')
...
>>>
>>> Persona.createTable()
>>> Persona(primer_nombre='Milton',inicial='m',apellido='Inostroza')
<Persona 1 primer_nombre='Milton' inicial='m' apellido='Inostroza'>
hasta este momento ningún problema, ahora procedo a crear la clase Direccion:
>>> class Direccion(SQLObject):
... calle=StringCol()
... ciudad=StringCol()
... estado=StringCol()
... persona=ForeignKey('Persona')
...
>>> Direccion.createTable()
entonces ahora le asigno una dirección a una persona, esto lo hago de
la siguiente manera
>>> Direccion(calle='gomez carreño',ciudad='iquique',estado='iquique',persona=1)
todo lo hace bien...pero se me ocurrio luego asignar una direccion a
una persona que no existe {sinceramente esperaba algún error}
>>> Direccion(calle='gomez carreño',ciudad='iquique',estado='iquique',persona=7)
y simplemente la agrega sin problemas.
Acá esta mi rompe cabezas....supuestamente si la clave de persona
igual a 7 no existe como persona el registro de la dirección no debe
porque ser registrado, e incluso yo diría que me debiera dar un error
de integridad...alguien me puede ayudar con mi duda?...algún link que
leer {estoy en la documentación oficial de SQLObject}....o será porque
estoy usando sqlite?, tendrá un comportamiento distinto en postgresql?
salu2,
--
Milton Inostroza Aguilera
Más información sobre la lista de distribución Python-es