Posted on:
Last modified:
有时候我们的表并不都在一个数据库中,需要使用多个数据库,django 支持配置并使用多个数据库。
首先,在 DATABASES 中定义需要使用的多个数据库:
DATABASES = {
"default": {},
"users": {
"NAME": "user_data",
"ENGINE": "django.db.backends.mysql",
"USER": "mysql_user",
"PASSWORD": "superS3cret"
},
"customers": {
"NAME": "customer_data",
"ENGINE": "django.db.backends.mysql",
"USER": "mysql_cust",
"PASSWORD": "veryPriv@ate"
}
}
注意其中 default
是必须的,不过用不到的话,留空也行。
在使用 manage.py
的时候可以使用 --database=xxx
里指定数据库。
可以通过实现 Database Router 来让 django 自动选择应该使用的数据库。
DB router 需要实现下面四个方法,用来指定不同的 Model 对应的模型。
db_for_read(model, **hints)
用来读取表时,查找对应的数据库。返回数据库配置名(DATABASES 中定义的)db_for_write(model, **hints)
用来写入表时,查找对应的数据库。allow_relation
allow_migrate
最后使用 DATABASE_ROUTERS
安装对应的路由:
DATABASE_ROUERS = ["path.to.router"]
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站