On Sep 5, 2008, at 12:23 AM, Sam wrote:
>
> Michael...
>
> I've read the tutorial, and I think I understand it.
>
> But maybe I don't understand reflection. I thought that I could use
> it to avoid defining anything. I'd like to have objects basically
> spring into life knowing exactly what their row names are, without
> having to type anything.
Sam -
you have the reflection part down. Now you have a Table object, all
the columns are there, and you don't need to restate them in any
case. I'll lay out three different approaches to using it.
First is, classical ORM usage. For this, the Table has to be mapped
to a class. this would look like:
class MPhone(object):
def __init__(self, **kw):
for k in kw:
setattr(self, k, kw[k])
mapper(MPhone, mhones)
Second, a shortcut to the above approach is to use the declarative
module. You can have a less verbose approach and you'll get the
MPhone(x='x', y='y', ...) constructor you're looking for for free
(i.e. without needing the above __init__):
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine("postgres://postgres:[redacted]/mydb")
Base = declarative_base(engine=engine)
class MPhone(Base):
__tablename__ = 'mphones'
__table_args__= {'autoload':True}
Session = sessionmaker()
sess = Session()
sess.add(MPhone(word='foo', mphone='bar'))
sess.commit()
Third approach, don't use the ORM, just use the Table and create an
INSERT statement:
from sqlalchemy import *
engine = create_engine("postgres://postgres:[redacted]/mydb")
meta = MetaData()
meta.bind = engine
mphones = Table('mphones', meta, autoload=True)
mphones.insert().execute(word='foo', mphone='bar')
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---