• Django操作多个数据库读写分离


    创建数据库:

          

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME':'default',
            'HOST': '127.0.0.1',  # 主服务器的运行ip
            'PORT': 3306,   # 主服务器的运行port
            'USER': 'root',  # 主服务器的用户名
            'PASSWORD': '123456',  # 主服务器的密码
    
        },
        'slave': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME':'slave',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '123456',
    
        }
    }

     模型建表:

    from django.db import models
    
    # Create your models here.
    class Article(models.Model):
    
        #verbose_name在admin中显示该字段的中文
        title = models.CharField(max_length=64)
        #文章摘要
        desc = models.CharField(max_length=255)

    数据库迁移:

    python manage.py makemigrations  # 在migrations文件夹下生成记录
    
    python manage.py migrate --database default  # 默认可以不写参数
    
    python manage.py migrate --database slave  # 在从库再迁移一次,就可以在上面建立相同的表

    在项目的app中创建db_router.py文件,并在该文件中定义一个数据库路由类,用来进行读写分离,这个类最多提供四个方法,分别是:db_for_readdb_for_writeallow_relationallow_migrate,以下只写了三个。

    class MasterSlaveDBRouter(object):
        """数据库主从读写分离路由"""
     
        def db_for_read(self, model, **hints):
            """读数据库"""
            return "slave"
     
        def db_for_write(self, model, **hints):
            """写数据库"""
            return "default"
     
        def allow_relation(self, obj1, obj2, **hints):
            """是否运行关联操作"""
            return True  

    注意在settings.py中进行配置:

    DATABASE_ROUTERS = ["app001.db_router.MasterSlaveDBRouter"]

    视图函数即可操作:

    def write(request):
        models.Article.objects.create(title='红楼梦',desc='good')
    #使用using('default')可以指定数据库
    return HttpResponse('写成功') def read(request): obj = models.Article.objects.filter(title='西游记').first() print(obj.title) return HttpResponse('读成功')

     

  • 相关阅读:
    AMD64 Instruction-Level Debugging With dbx
    Solaris 10上安装Oracle 11g
    Dave-oracle
    SSD 下的 MySQL IO 优化
    vmware 网络工作方式
    PLSQL Developer 配置Oralce11g连接 转
    LINUX下的21个特殊符号 转
    linux 内核调试相关资料
    mysql 源代码编绎
    Windows Performance Toolkit
  • 原文地址:https://www.cnblogs.com/sima-3/p/11390757.html
Copyright © 2020-2023  润新知