On Jun 16, 2010, at 7:58 AM, Robert Sudwarts wrote:
> Hi,
>
> I'm having difficulty understanding how to call/create a session to access a
> "class method" of a declaratively defined table/object: essentially my
> understanding of how session works in this context is at fault... Clearly,
> the @classmethod requires a **session** (and I realise that: "declarative has
> no integration built in with sessions, and is only intended as an optional
> syntax for the regular usage of mappers and Table objects") but I'm unsure of
> how to 'poke' this in. And I'm not sure if "model.py" require the definition
> of its own 'local' session, or if/whether this would conflict with the
> session instantiated in "controller.py"
>
> I'd be grateful for any assistance!
>
> What I'm trying to achieve is as follows:
>
> Module #1 -- model.py
>
> from sqlalchemy.ext.declarative import declarative_base
>
> Base = declarative_base()
>
> class SomeClass(Base):
> __tablename__ = 'some_table'
> id = Column(Integer, primary_key=True)
> name = Column(String(50))
>
> @classmethod
> def by_name(cls, name):
> return **Session**.query(cls).filter(cls.name==name).first()
>
> def build_db():
> '''call this to create the database'''
> engine = create_engine('sqlite:///
> Base.metadata.create_all(engine=engine)
>
> Module #2 - controller.py
>
> from model.py import SomeClass
> from sqlalchemy import create_engine
> from sqlalchemy.orm import sessionmaker, scoped_session
>
> engine = create_engine('sqlite:///)
> Session = scoped_session(sessionmaker(bind=engine, autocommit=False,
> autoflush=False))
>
> def getUser(username):
> return SomeClass.by_name(username)
>
your scoped_session would be defined someplace neutral, for example Pylons puts
it in a file called model/meta.py, and your classmethod would access it
directly as a global variable in meta.
--
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.