Re: [sqlalchemy] views declarative?

2013-04-19 Thread James Hartley
On Wed, Apr 17, 2013 at 2:59 PM, Michael Bayer mike...@zzzcomputing.comwrote:

 James Hartley jjhart...@gmail.com writes:
  Is it possible to map Table instances back to classes defined through
  declarative_base()?

 the typical form is:

 Base = declarative_base()

 some_table = Table('some_table', Base.metadata, Column('id', Integer,
 primary_key=True))

 class SomeClass(Base):
__table__ = some_table


Thanks all for the responses.

The Wiki recipe for views:

http://www.sqlalchemy.org/trac/wiki/UsageRecipes/Views

...creates  drops the defined view on-the-fly.  This raises two
questions.  Is there a way to allow the view created in Python code to
persist?  Likewise, is there a way to take advantage of an existing view
defined at the database level?  An obvious workaround is to create a
duplicate view with a different name, but I'm curious as to whether the two
can be merged.

Thanks again for the insight shared.

-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sqlalchemy] views declarative?

2013-04-19 Thread Michael Bayer

On Apr 19, 2013, at 11:01 AM, James Hartley jjhart...@gmail.com wrote:

 On Wed, Apr 17, 2013 at 2:59 PM, Michael Bayer mike...@zzzcomputing.com 
 wrote:
 James Hartley jjhart...@gmail.com writes:
  Is it possible to map Table instances back to classes defined through
  declarative_base()?
 
 the typical form is:
 
 Base = declarative_base()
 
 some_table = Table('some_table', Base.metadata, Column('id', Integer, 
 primary_key=True))
 
 class SomeClass(Base):
__table__ = some_table
 
 Thanks all for the responses.
 
 The Wiki recipe for views:
 
 http://www.sqlalchemy.org/trac/wiki/UsageRecipes/Views
 
 ...creates  drops the defined view on-the-fly.  This raises two questions.  
 Is there a way to allow the view created in Python code to persist? 

when you emit CREATE VIEW, which is what that recipe helps you do, that's a 
persistent view in the database.

 Likewise, is there a way to take advantage of an existing view defined at the 
 database level? 

Sure, you'd make a Table object, giving it the name of the view as well as the 
columns that the view returns.  Then you just SELECT from it normally.   This 
can also be accomplished via reflection, Table(myview, metadata, 
autoload=True, autoload_with=engine).


 An obvious workaround is to create a duplicate view with a different name, 
 but I'm curious as to whether the two can be merged.

for a more integrated approach, the def view() in the recipe can be enhanced 
to allow a reflect from database argument, or a list of columns, something 
like that.  It's a recipe so that it illustrates techniques which you can alter 
to suit your specific needs.


-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sqlalchemy] views declarative?

2013-04-17 Thread Michael Bayer

On Apr 17, 2013, at 9:59 AM, James Hartley jjhart...@gmail.com wrote:

 On Wed, Apr 17, 2013 at 6:20 AM, Lele Gaifax l...@metapensiero.it wrote:
 James Hartley jjhart...@gmail.com writes:
  Is it possible to map Table instances back to classes defined through
  declarative_base()?
 
 ...I assume you are asking whether you can map a view onto a
 Python class using the declarative layer. If so, yes, SQLAlchemy does
 not care about how the underlying table is implemented, it will issue
 the same SQL in either cases.
 
 
 Thanks for your reply.  Any hints on how to tie a class inheriting from Base 
 to a Table?  I have been unsuccessful in bridging the two.

the typical form is:

Base = declarative_base()

some_table = Table('some_table', Base.metadata, Column('id', Integer, 
primary_key=True))

class SomeClass(Base):
   __table__ = some_table


-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.