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 [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
-~----------~----~----~----~------~----~------~--~---
# 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