Berikutnya mungkin bukan jawaban yang tepat untuk masalah Anda, tetapi apa yang saya coba sendiri - berhasil - adalah menggunakan playhouse.Proxy contoh untuk setiap skema yang ingin saya gunakan, dan merujuk ke proxy yang sesuai di kelas dalam Meta. Saya kira ini akan berfungsi tanpa proxy juga. Namun, sepertinya Anda mencari kueri lintas-skema, dan sudah mengetahui apa yang baru saja saya buat.
#!/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')
Nah, ini dimungkinkan dengan kode yang dihasilkan kerajinan tangan dari pwiz.py. Saya yakin ada yang lebih elegan dan malas (yaitu tidak bersemangat ) cara untuk melakukan ini juga, menggunakan semacam pabrik, tetapi saya belum menghabiskan banyak waktu untuk Python atau PeeWee. Jika demikian, saya kira pwiz.py harus memiliki tanda tambahan untuk tujuan ini.