Het volgende is misschien niet precies een antwoord op je probleem, maar wat ik zelf heb geprobeerd - met succes - is het gebruik van een playhouse.Proxy instantie voor elk schema dat ik wil gebruiken, en verwijzen naar een overeenkomstige proxy in de innerclass Meta. Ik denk dat dit ook zal werken zonder proxy's. Het lijkt er echter op dat u op zoek bent naar cross-schema-query's en al hebt ontdekt wat ik zojuist heb bedacht.
#!/usr/bin/python
import sqlite3
import peewee
from peewee import *
from playhouse.proxy import *
database_a_proxy = Proxy()
database_b_proxy = Proxy()
class BaseModelA(Model):
class Meta:
database = database_a_proxy
class BaseModelB(Model):
class Meta:
database = database_b_proxy
class RelationInSchemaA(BaseModelA):
textfield = CharField()
class RelationInSchemaB(BaseModelB):
textfield = CharField()
database_a = SqliteDatabase('schemaA', **{})
database_b = SqliteDatabase('schemaB', **{})
database_a_proxy.initialize(database_a)
database_b_proxy.initialize(database_b)
try:
RelationInSchemaA.create_table()
RelationInSchemaB.create_table()
except:
pass
RelationInSchemaA.create(textfield='Hello')
RelationInSchemaB.create(textfield='PeeWee')
Welnu, dit is mogelijk door met de hand gegenereerde code van pwiz.py te maken. Ik weet zeker dat er een elegantere en luie . is (d.w.z. niet enthousiast ) manier om dit ook te doen, met behulp van een soort fabriek, maar ik heb nog niet veel tijd besteed aan Python of PeeWee. Als dat zo is, zou pwiz.py voor dit doel ook een extra vlag moeten hebben, denk ik.