Hello,

I am testing out some old SQLAlchemy code I wrote for 0.3.3 on the newest
version of SQLAlchemy (0.3.8), and I have a problem.

The short of it is that I get this error:

InvalidRequestError: Column 'users.id' is not available, due to conflicting
property 'id':<sqlalchemy.orm.properties.ColumnProperty object at
0x011866B0>

Attached is a test file that generates this error

Thanks,

Michael

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

# There are two main classes, Group and User, and a relation class Membership.
# In order for a User u to be a member of Group g, there must be an entry in 
# the membership table with a level of 100.

from sqlalchemy import *
db = create_engine('sqlite://', echo=True)
meta = BoundMetaData(db)
session = create_session()

groups = Table("groups", meta,
    Column("id",Integer, primary_key=True),
    Column("name", Unicode(40)))
    
membership = Table("membership", meta, 
    Column("user_id", Integer, ForeignKey("users.id"), primary_key=True),
    Column("group_id", Integer, ForeignKey("groups.id"), primary_key=True),
    Column("level", Integer))
    
users = Table("users", meta,
    Column("id", Integer, primary_key=True),
    Column("name", Unicode(255)))
    
class User(object):
    def __repr__(self): return str(self)
    def __str__(self): return "<User %s: %s>" % (self.id, self.name)
    
class Group(object):
    def __repr__(self): return str(self)
    def __str__(self): return "<Group %s: %s>" % (self.id, self.name)

class Membership(object):
    def __repr__(self): return str(self)
    def __str__(self): return "<Membership %s, %s: %s>" % (self.user_id, self.group_id, self.level)
    
    
Group.mapper = mapper(Group, groups, properties = {
    'members': relation(User, viewonly=True,
        secondary=membership, backref='groups',
        primaryjoin=and_(membership.c.user_id==users.c.id, membership.c.level==100, membership.c.group_id==groups.c.id)),
})

User.mapper = mapper(User, users, properties = {
})

Membership.mapper = mapper(Membership, membership, properties = {
    'user': relation(User),
    'group': relation(Group)
})

meta.drop_all()
meta.create_all()
u = User()
g = Group()
m = Membership()
u.name = 'Michael Carter'
g.name = 'Home'
m.group = g
m.user = u
m.level = 100
session.save(u)
session.save(g)
session.save(m)
session.flush()
print u.groups
print g.members

Reply via email to