Proxy —
peewee API#Proxy
В продолжение темы, если грязно эмулировать работу django:
# -*- coding: utf-8 -*-
import peewee
db = peewee.Proxy()
first = peewee.SqliteDatabase('first.db')
second = peewee.SqliteDatabase('second.db')
class Test(peewee.Model):
name = peewee.CharField()
class Meta:
database = db
db_table = 'test'
@classmethod
def using(cls, db):
cls._meta.database.initialize(db)
return cls
db.initialize(first)
Test.create_table(fail_silently=True)
db.initialize(second)
Test.create_table(fail_silently=True)
Test.using(first).create(name='Test1') # Переключились на first
Test.create(name='Test2') # Используется ранее переключенная база first
Test.using(second).create(name='Test3') # Переключились на secong
Test.create(name='Test4') # Пишется в second
Test.using(first).create(name='Test5')
print ','.join([x.name for x in Test.using(first).select()])
# Test1,Test2,Test5
print ','.join([x.name for x in Test.using(second).select()])
# Test3,Test4
Вообще peewee активно развивается и постоянно вводит новые фичи, так что можно написать ему на
github, вполне возможно, что в следующей версии грязные хаки не понадобятся.
Но тем не менее до сих пор сомневаюсь в целесообразности подобного поведения в целом.
Ещё возможно алиасы моделей могут иметь свои подключения, но читать сурс или проверять лень.