Dalej nie jest może dokładna odpowiedź na twój problem, ale sam próbowałem – z powodzeniem – używając playhouse.proxy dla każdego schematu, którego chcę użyć, i odwołaj się do odpowiedniego serwera proxy w wewnętrznej klasie Meta. Myślę, że to zadziała również bez serwerów proxy. Wygląda jednak na to, że szukasz zapytań obejmujących wiele schematów i już zorientowałeś się, co właśnie wymyśliłem.
#!/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')
Cóż, jest to możliwe dzięki ręcznemu wytwarzaniu kodu z pwiz.py. Jestem pewien, że istnieje bardziej elegancki i leniwy (tzn. nie jestem chętny ) sposób to zrobić, używając jakiejś fabryki, ale nie spędziłem jeszcze dużo czasu na Pythonie ani PeeWee. Jeśli tak, pwiz.py powinien mieć dodatkową flagę do tego celu, jak sądzę.