On Feb 10, 2010, at 5:35 AM, anusha kadambala wrote: > hello all, > > I want to create view based on the following tables > > from sqlalchemy import create_engine > from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey > from sqlalchemy.ext.declarative import declarative_base > from sqlalchemy.orm import sessionmaker,scoped_session,relation,backref > > engine = create_engine('postgresql:///try', echo=False) > Base = declarative_base() > class User(Base): > __tablename__ = 'users' > id = Column(Integer, primary_key=True) > name = Column(String) > fullname = Column(String) > password = Column(String) > > def __init__(self,name, fullname, password): > self.name = name > self.fullname = fullname > self.password = password > > def __repr__(self): > return "<User('%s','%s', '%s')>" % (self.name, self.fullname, > self.password) > > users_table = User.__table__ > > > class Office(Base): > __tablename__ = 'office' > cid = Column(Integer, primary_key=True) > name = Column(String) > org = Column(String) > > > def __init__(self,name, org): > self.name = name > self.org = org > > def __repr__(self): > return "<User('%s','%s', '%s')>" % (self.name, self.org) > > office_table = Office.__table__ > metadata = Base.metadata > metadata.create_all(engine) > Session = scoped_session(sessionmaker(bind=engine)) > Session.add_all([User('wendy', 'Wendy Williams', 'foobar'),User('mary', 'Mary > Contrary', 'xxg527'),User('fred', 'Fred Flinstone', > 'blah'),Office('wendy','Comet'),Office('kk','Comet')]) > Session.commit() > > I want to write a view class in which i can select user.name and office.name > where user.id = office.id which reflects in the database. > > I got something like this which i got when i google but i didnt understand > how it happens actually
the quickest way is to just map to a join: j = users_table.join(office_table, users_table.c.id==office_table.c.cid) class UserOffice(Base): __table__ = j # disambiguate "office.name" from "users.name" office_name = j.c.office_name print Session.query(UserOffice).filter(UserOffice.name=='wendy').all() print Session.query(UserOffice).filter(UserOffice.office_name=='mary').all() if you want to do a real CREATE VIEW, we have that new recipe at http://www.sqlalchemy.org/trac/wiki/UsageRecipes/Views , but the mapper part of it would still look like: class UserOffice(Base): __table__ = myview # ... > > http://groups.google.com/group/sqlalchemy/browse_thread/thread/cd4455178d886e73 > > > > -- > > > Njoy the share of Freedom :) > Anusha Kadambala > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@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. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.