Hi,

Just wanted to say thanks to those who helped me with this. Simon's solution 
was exactly what I was looking for (though I have to admit I don't exactly 
understand *how* it works!). But that's no longer an SQLAlchemy question...

Cheers,
Demitri

On Jul 8, 2010, at 5:49 AM, King Simon-NFHD78 wrote:

> In general, you don't need a database connection just to define your
> tables and mappers. The 'bind' parameter to DeclarativeBase is optional,
> and only necessary if you are using autoloading. So one solution to your
> problem would be not to use autoloading, and bind to a database at the
> Session level rather than the Mapper level. That would be the usual way
> to use the same set of classes against multiple databases.
> 
> If you really need to use autoloading, you could move all your class
> definitions into a function that accepts a database engine as a
> parameter. For example:
> 
> #################
> # ModelClasses.py
> 
> class Namespace(object):
>   def __init__(self, **kwargs):
>       self.__dict__.update(kwargs)
> 
> 
> def initdb(connection_string):
>   engine = create_engine(connection_string)
>   Base = declarative_base(bind=engine)
> 
>   class Table1(Base):
>       __tablename__ = 'table1'
>       __table_args__ = {'autoload': True}
> 
> 
>   return Namespace(Base=Base,
>                    Table1=Table1)
> 
>   # or, you could be lazy:
>   # return Namespace(**locals())
> 
> 
> 
> ####################
> # MainScript1.py
> import ModelClasses
> 
> db = ModelClasses.initdb(my_connection_string)
> 
> # access db.Table1, db.Base etc.
> 
> 
> 
> Hope that helps,
> 
> Simon

-- 
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.

Reply via email to