Tiếp theo có thể không phải là câu trả lời chính xác cho vấn đề của bạn, nhưng điều mà tôi đã tự mình thử - thành công - là sử dụng playhouse.Proxy ví dụ cho mọi lược đồ tôi muốn sử dụng và tham chiếu đến một proxy tương ứng trong Meta lớp bên trong. Tôi đoán điều này cũng sẽ hoạt động mà không cần proxy. Tuy nhiên, có vẻ như bạn đang tìm kiếm các truy vấn lược đồ chéo và đã tìm ra những gì tôi nghĩ ra ngay bây giờ.
#!/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')
Chà, điều này có thể thực hiện được với mã được tạo thủ công từ pwiz.py. Tôi chắc chắn rằng có một lười biếng thanh lịch hơn (tức là không háo hức ) cách để làm điều này, sử dụng một số loại nhà máy, nhưng tôi chưa dành nhiều thời gian cho Python cũng như PeeWee. Nếu vậy, pwiz.py cũng nên có thêm một cờ cho mục đích này, tôi đoán vậy.