这一篇笔记介绍一下多数据库操作。
在第十篇笔记的时候,简略介绍过 using() 的应用办法,多个数据库就是通过 using(db_alias) 的形式来来指定选中的数据库,这里介绍一下同步库表构造时候的操作。
- 定义形式
- 同步命令
- 指定数据库操作
1、定义形式
在 settings.py 的 DATABASES 变量中能够定义多个数据库,如果是多个数据库,示例如下:
DATABASES = { 'default': { 'NAME': 'app_data', 'ENGINE': 'django.db.backends.postgresql', 'USER': 'postgres_user', 'PASSWORD': 's3krit' }, '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' }}
通过 DATABASES 的 key 定义不同数据库的名称,应用的时候就能够依据这几个 key 来连贯拜访。
2、同步命令
之前介绍过 migrate 的相干命令,比方:
python3 manage.py migrate
之前的这种操作是因为零碎都是应用的默认的数据库,也就是 default,如果是须要对其余数据库进行相干 migrate 的操作,须要通过 --database=db_alias 的命令来指定数据库。
比方须要对 users 数据库进行表构造的操作,命令如下:
python3 manage.py migrate --database=users
当然,如果咱们应用的还是 default 数据库,那么加不加 --database 参数都能够。
3、指定数据库操作
对于数据库的操作,比如说获取 Blog 这个 model 的所有数据,如果是 default 数据库,那么命令则是:
Blog.objects.all()
而如果这个 model 是指定的其余数据库,比方 users,那么应用前须要通过 using(db_alias) 来指定:
db_alias = "users"Blog.objects.using(db_alias).all()
以及一些其余的操作:
blog = Blog.objects.using(db_alias).get(id=1)Blog.objects.using(db_alias).filter(id=1).delete()# 上面的是新建的保留操作:obj.save(using=db_alias)
以上就是本篇笔记的全部内容,下一篇将介绍如何应用 model 的条件表达式的搜寻,更新等操作。
本文首发于自己微信公众号:Django笔记。
原文链接:Django笔记二十二之多数据库操作
如果想获取更多相干文章,可扫码关注浏览: