Nästa är kanske inte exakt ett svar på ditt problem, men det jag försökte själv - framgångsrikt - är att använda en lekstuga.Proxy instans för varje schema jag vill använda, och hänvisar till en motsvarande proxy i innerklassen Meta. Jag antar att det här kommer att fungera utan proxyservrar också. Det verkar dock som om du letar efter schemaöverskridande frågor och redan har kommit på vad jag kom fram till just nu.
#!/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')
Tja, detta är möjligt med hantverksgenererad kod från pwiz.py. Jag är säker på att det finns en mer elegant och lat (dvs. inte ivriga ) sätt att göra detta också, med någon form av fabrik, men jag har inte spenderat mycket tid på Python eller PeeWee än. I så fall borde pwiz.py ha en extra flagga för detta ändamål också, antar jag.