I got this to work by passing a 'creator' argument to create_engine
and doing the ATTACH inside my creator function. Below is a full code
example. Each database contains one table, database_a -> table_a and
database_b -> table_b.
from sqlalchemy import *
from sqlalchemy.ext.assignmapper import assign_mapper
import sqlalchemy
from sqlalchemy.ext import activemapper, sessioncontext
engine = None
def connect():
from pysqlite2 import dbapi2 as sqlite
conn = sqlite.connect('c:\\tmp\\database_a')
conn.execute("ATTACH DATABASE 'C:\\tmp\\database_b' AS
database_b")
return conn
def create_engine():
global engine
engine = sqlalchemy.create_engine('sqlite:////tmp/database_a',
creator=connect)
metadata.connect(engine)
def create_session():
return sqlalchemy.create_session(bind_to=engine)
metadata = activemapper.metadata
create_engine()
session = activemapper.Objectstore(create_session)
activemapper.objectstore = session
##########################################################################
# Classes
##########################################################################
class A(object): pass
class B(object): pass
##########################################################################
# Tables
##########################################################################
table_a = sqlalchemy.Table('table_a', metadata, autoload=True)
table_b = sqlalchemy.Table('table_b', metadata, autoload=True)
##########################################################################
# Mappings
##########################################################################
assign_mapper(session.context, A, table_a)
assign_mapper(session.context, B, table_b)
import sys
for a in A.select():
print 'id: %s, b_id: %s, s: %s' % (a.id, a.b_id, a.s)
for b in B.select():
print 'id: %s, s: %s' % (b.id, b.s)
print list(select([table_a, table_b], table_a.c.b_id ==
table_b.c.id).execute())
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---