路由器¶
使用多个数据库的最简单方法是设置数据库路由方案。默认路由方案确保对象“粘滞”到其原始数据库(即,从 foo 数据库检索的对象将保存在同一数据库上)。默认路由方案确保如果未指定数据库,所有查询都将回退到默认数据库。
用法¶
定义路由器¶
定义路由器很简单,您只需要编写一个具有 db_for_read 和 db_for_write 方法的类。
class Router:
def db_for_read(self, model: Type[Model]):
return "slave"
def db_for_write(self, model: Type[Model]):
return "master"
这两个方法返回配置中定义的连接字符串。
配置路由器¶
只需将其放入 tortoise 的配置中或 Tortoise.init 方法中。
config = {
"connections": {"master": "sqlite:///tmp/test.db", "slave": "sqlite:///tmp/test.db"},
"apps": {
"models": {
"models": ["__main__"],
"default_connection": "master",
}
},
"routers": ["path.Router"],
"use_tz": False,
"timezone": "UTC",
}
await Tortoise.init(config=config)
# or
routers = config.pop('routers')
await Tortoise.init(config=config, routers=routers)
之后,所有 select 操作都将使用 slave 连接,所有 create/update/delete 操作都将使用 master 连接。