Hello list,

I need some advice on setting a one-to-many join in my particular case
(non-normalized db model)


I have the following situation:
- 2 tables with a 1..n join - note: the references table field is not
a primary key (I have to work on a non-normalized model, that's life)
- I need to setup a 1..n in sa
- I used the many-to-one relationship exmaple to get inspired:
http://www.sqlalchemy.org/docs/05/mappers.html#many-to-one


My problem is:
- the join is not effective
- I wonder if it is due to the fact that my referenced table column is
not a primary key?


Here is my model:
from pylons import config

from sqlalchemy import Column, MetaData, Table, types
from sqlalchemy.orm import mapper, relation
from sqlalchemy.schema import ForeignKey

from mapfish.sqlalchemygeom import Geometry
from mapfish.sqlalchemygeom import GeometryTableMixIn

#from edric_hydro.model.checkpoints import Checkpoint


watersheds_table = Table(
    'bv_hydrosuisse',
    MetaData(config['pylons.g'].sa_edric_hydro_engine),
    Column('the_geom', Geometry(900913)),
    Column('name', types.String(50)),
    autoload=True)

class Watershed(GeometryTableMixIn):
    # for GeometryTableMixIn to do its job the __table__ property
    # must be set here
    __table__ = watersheds_table


checkpoints_table = Table(
    'jonctions',
    MetaData(config['pylons.g'].sa_edric_hydro_engine),
    Column('the_geom', Geometry(900913)),
    Column('name', types.String(50), ForeignKey
(watersheds_table.c.name)), # maybe watershed.id
    autoload=True)

class Checkpoint(GeometryTableMixIn):
    # for GeometryTableMixIn to do its job the __table__ property
    # must be set here
    __table__ = checkpoints_table

mapper(Checkpoint, checkpoints_table)


mapper(Watershed, watersheds_table, properties={
    #'checkpoint': relation(Checkpoint)
    'checkpoint': relation(Checkpoint, backref='bv_hydrosuissedsads')
})


from pylons import config

from sqlalchemy import MetaData
from sqlalchemy.orm import scoped_session, sessionmaker

Session = scoped_session(sessionmaker())

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to