翼度科技»论坛 编程开发 python 查看内容

Django笔记二十二之多数据库操作

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
本文首发于公众号:Hunter后端
原文链接:Django笔记二十二之多数据库操作
这一篇笔记介绍一下多数据库操作。
在第十篇笔记的时候,简单介绍过 using() 的使用方法,多个数据库就是通过 using(db_alias) 的方式来来指定选中的数据库,这里介绍一下同步库表结构时候的操作。

  • 定义方式
  • 同步命令
  • 指定数据库操作
1、定义方式

在 settings.py 的 DATABASES 变量中可以定义多个数据库,如果是多个数据库,示例如下:
  1. DATABASES = {
  2.     'default': {
  3.         'NAME': 'app_data',
  4.         'ENGINE': 'django.db.backends.postgresql',
  5.         'USER': 'postgres_user',
  6.         'PASSWORD': 's3krit'
  7.     },
  8.     'users': {
  9.         'NAME': 'user_data',
  10.         'ENGINE': 'django.db.backends.mysql',
  11.         'USER': 'mysql_user',
  12.         'PASSWORD': 'superS3cret'
  13.     },
  14.     'customers': {
  15.         'NAME': 'customer_data',
  16.         'ENGINE': 'django.db.backends.mysql',
  17.         'USER': 'mysql_cust',
  18.         'PASSWORD': 'veryPriv@ate'
  19.     }
  20. }
复制代码
通过 DATABASES 的 key 定义不同数据库的名称,使用的时候就可以根据这几个 key 来连接访问。
2、同步命令

之前介绍过 migrate 的相关命令,比如:
  1. python3 manage.py migrate
复制代码
之前的这种操作是因为系统都是使用的默认的数据库,也就是 default,如果是需要对其他数据库进行相关 migrate 的操作,需要通过 --database=db_alias 的命令来指定数据库。
比如需要对 users 数据库进行表结构的操作,命令如下:
  1. python3 manage.py migrate --database=users
复制代码
当然,如果我们使用的还是 default 数据库,那么加不加 --database 参数都可以。
3、指定数据库操作

对于数据库的操作,比如说获取 Blog 这个 model 的所有数据,如果是 default 数据库,那么命令则是:
  1. Blog.objects.all()
复制代码
而如果这个 model 是指定的其他数据库,比如 users,那么使用前需要通过 using(db_alias) 来指定:
  1. db_alias = "users"
  2. Blog.objects.using(db_alias).all()
复制代码
以及一些其他的操作:
  1. blog = Blog.objects.using(db_alias).get(id=1)
  2. Blog.objects.using(db_alias).filter(id=1).delete()
  3. # 下面的是新建的保存操作:
  4. obj.save(using=db_alias)
复制代码
以上就是本篇笔记的全部内容,下一篇将介绍如何使用 model 的条件表达式的搜索,更新等操作。
如果想获取更多后端相关文章,可扫码关注阅读:


来源:https://www.cnblogs.com/hunterxiong/p/17307862.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具