Hi,
My question is: Is it possible to have a many-to-many relation on a
self reference, without using an Association Object?
I'm using sqlalchemy to work with Drupal tables for a data migration
project. Drupal's taxonomy features hierarchical vocabularies, where
terms live in a term_data table and are associated with other terms
via term_hierarchy. A child can have many parents.
I've gotten the object mapping to basically work, like this:
class TermHierarchy(Base):
__tablename__ = 'term_hierarchy'
childid = Column(u'childid', Integer(), primary_key=True,
nullable=False)
parentid = Column(u'parentid', Integer(), primary_key=True,
nullable=False)
class TermData(Base):
__tablename__ = 'term_data'
id = Column(u'id', Integer(), primary_key=True, nullable=False,
autoincrement=True)
name = Column(u'name', String(length=255))
children_assoc = relation(TermHierarchy,
primaryjoin=(TermHierarchy.parentid==id),
foreign_keys=[TermHierarchy.parentid],
backref=backref('parent', uselist=False),
uselist=True)
parents_assoc = relation(TermHierarchy,
primaryjoin=(TermHierarchy.childid==id),
foreign_keys=[TermHierarchy.childid],
backref=backref('child', uselist=False),
uselist=True)
This works OK, except that to get to a parent or child I have to go
through the Association object:
>>> first = TermData('first')
>>> second = TermData('second', parent=first)
>>> third = TermData('third', parent=second)
>>> another_third = TermData('another_third', parent=second)
>>> second.children_assoc
[<selfref.TermHierarchy object at 0xa69c40c>, <selfref.TermHierarchy
object at 0xa69c5ac>]
>>> [x.child for x in second.children_assoc]
[<selfref.TermData object at 0xa69c48c>, <selfref.TermData object at
0xa69c56c>]
>>>
Since there are only 2 columns in the association table, i'd like to
leave it out of the mapping, which would simplify
running queries. I tried several variations on M:N mapping but
couldn't make it work. Before I bang my head against this wall any
more, maybe someone could tell me if it's possible?
Any advice appreciated.
Wade Leftwich
Ithaca, NY
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---