当前位置:Gxlcms > 数据库问题 > Django 多应用多数据库

Django 多应用多数据库

时间:2021-07-01 10:21:17 帮助过:48人阅读

dbsettings.py:


class appdb(object):

 

    def db_for_read(self, model, **hints):

        #该方法定义读取时从哪一个数据库读取

        return self.__app_router(model)

 

    def db_for_write(self, model, **hints):

        #该方法定义写入时从哪一个数据库读取,如果读写分离,可再额外配置

        return self.__app_router(model)

 

    def allow_relation(self, obj1, obj2, **hints):

        #该方法用于判断传入的obj1和obj2是否允许关联,可用于多对多以及外键

        #同一个应用同一个数据库

        if obj1._meta.app_label == obj2._meta.app_label:

            return True

        #User和Essay是允许关联的

        elif obj1._meta.app_label in (‘userApp‘,‘essayApp‘) and

        #接上一行  obj2._meta.app_label in (‘userApp‘,‘essayApp‘):

            return True

 

 

    def allow_syncdb(self, db, model):

        #该方法定义数据库是否能和名为db的数据库同步

        return self.__app_router(model) == db

 

   #添加一个私有方法用来判断模型属于哪个应用,并返回应该使用的数据库

    def __app_router(self, model):

        if model._meta.app_label == ‘user‘:

            return ‘userdb‘

        else :

            return ‘default‘

  • 使用方法

    User.objects.using(‘user‘).all()

    python manage.py syncdb --database=user

  • 自定义sql:


  •      from django.db import connections

          

    cursor = connections[‘user’].cursor()

        sql="select *  user"

        cursor.execute(sql)

        rows = cursor.fetchall()

        return render_to_response(‘index.html‘,locals())


    本文出自 “水草” 博客,请务必保留此出处http://961911.blog.51cto.com/951911/1676221

    Django 多应用多数据库

    标签:django 多应用多数据库

    人气教程排行