SQLAlchemy: How to do Table Reflection and MySQL?

Prasad, Ramit ramit.prasad at jpmorgan.com
Tue Oct 23 18:42:08 EDT 2012


Nick Sabalausky wrote:
> On Mon, 22 Oct 2012 14:35:23 -0700 (PDT)
> darnold <darnold992000 at yahoo.com> wrote:
> >
> > i'm not brave enough to dig too deeply into SQLAlchemy, but maybe this
> > will help? :
> >
> > http://kashififtikhar.blogspot.com/2010/07/using-sqlalchemy-reflection-with-pylons.html
> >
> > that came up from googling "sqlalchemy table reflection tutorial".
> 
> Thanks, your view of Google seems to be far better tailored for Python
> than mine is, that doesn't come up for me anywhere on the first five
> pages of results for that query.
> 
> Unfortunately the info on that page doesn't seem to work for me:
> 
> ----------------------------------
> from sqlalchemy import *
> from sqlalchemy.orm import sessionmaker
> 
> engine = create_engine(my connection string)
> meta = MetaData()
> meta.bind = engine
> meta.reflect()
> 
> Session = sessionmaker(bind=engine)
> session = Session()
> 
> res = session.query(user).filter(user.name=="bert").first()
> print res.name
> ----------------------------------
> 
> That just gives me:
> 
> NameError: name 'user' is not defined
> 
> (And yes, the code given on that page to print out the table info
> *does* indicate a table named 'user' was found.)

This does not seem to be a SQLAlchemy problem. Instead it seems
there is not a variable called `name`. If you define 
the appropriate user it does it work? (From that page it seems 
like user should be a blank class like the following).

class user(object): pass

> 
> I also tried this which also fails:
> 
> res =
> session.query(meta.tables["user"]).filter(meta.tables["user"].name=="bert").first()
> 
> sqlalchemy.exc.ArgumentError: filter() argument must be of type
> sqlalchemy.sql.ClauseElement or string
> 
> The page you linked to appears to get around the matter by manually
> setting up tables filled with the reflected info, but that seems to
> defeat much of the point for me. I may as well just set up the tables
> manually without the reflection, which is what I'll probably do.
> 
> Maybe I just misunderstood what was meant in the SQLAlchemy docs here?:
> 
> "but note that SA can also “import” whole sets of Table objects
> automatically from an existing database (this process is called table
> reflection)."  --
> http://docs.sqlalchemy.org/en/rel_0_7/core/tutorial.html
> 
> It said that but then didn't say how and didn't link to any info on how.

Ramit Prasad



This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  


More information about the Python-list mailing list