使用RoutingSession计数时,“get\u bind”不接收映射程序

2024-05-29 04:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是sqlalchemy的主/从,通过类似

engines = {
    'master':create_engine("sqlite:///master.db"),
    'other':create_engine("sqlite:///other.db"),
    'slave1':create_engine("sqlite:///slave1.db"),
    'slave2':create_engine("sqlite:///slave2.db"),
}

from sqlalchemy.orm import Session, sessionmaker
import random

class RoutingSession(Session):
    def get_bind(self, mapper=None, clause=None):
        if mapper and issubclass(mapper.class_, MyOtherClass):
            return engines['other']
        elif self._flushing:
            return engines['master']
        else:
            return engines[
                random.choice(['slave1','slave2'])
            ]

here the link: 会议:

Session = scoped_session(sessionmaker(class_=RoutingSession))

s = Session()

当我需要Model3上的sun数据时:

s.query(Model3).count()

sqlalchemy引发错误:

sqlite3.OperationalError: no such table: model3

一些人,请帮助如何完成这个查询。 谢谢,这是预付款


Tags: importmasterdbsqlitereturnsqlalchemysessioncreate

热门问题