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

Reply via email to