次はあなたの問題に対する正確な答えではないかもしれませんが、私が自分で試したのは-成功して- playhouse.Proxyを使用することです 使用するすべてのスキーマのインスタンスであり、内部クラスMetaの対応するプロキシを参照します。これはプロキシがなくても機能すると思います。ただし、クロススキーマクエリを探していて、私が今思いついたものをすでに理解しているようです。
#!/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')
これは、pwiz.pyから生成されたコードを手作りすることで可能になります。もっとエレガントで怠惰な (つまり、熱心ではない )これを行う方法も、ある種のファクトリを使用しますが、PythonやPeeWeeにはまだ多くの時間を費やしていません。もしそうなら、pwiz.pyにもこの目的のための追加のフラグが必要だと思います。