Django app配置多个数据库代码实例

作者:luozx207 时间:2023-06-11 09:11:25 

这篇文章主要介绍了Django app配置多个数据库代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

每个app使用不同的数据库

1. 配置数据库连接


# settings.py
# DATABASES中必须要有default字段
DATABASES = {
 'default': {
   'ENGINE': 'django.db.backends.mysql',
   'NAME': 'db',
   'USER': '',
   'PASSWORD': '',
   'HOST': "localhost",
   'OPTIONS': {'init_command': 'SET default_storage_engine=INNODB;'}
   },
 'db1': {
   'ENGINE': 'django.db.backends.mysql',
   'NAME': 'db1',
   'USER': '',
   'PASSWORD': '',
   'HOST': "localhost",
   'OPTIONS': {'init_command': 'SET default_storage_engine=INNODB;'}
 }
 }

2. 配置数据库路由


# settings.py
DATABASES_APPS_MAPPING = {
 'app1': 'default',
 'app2': 'db1',
}

DATABASE_ROUTERS = ['utils.database_router.DatabaseAppsRouter']

3. 数据库路由文件:


from django.conf import settings

class DatabaseAppsRouter(object):
 def db_for_read(self, model, **hints):
   app_label = model._meta.app_label
   if app_label in settings.DATABASES_APPS_MAPPING:
     return settings.DATABASES_APPS_MAPPING[app_label]
   return None

def db_for_write(self, model, **hints):
   app_label = model._meta.app_label
   if app_label in settings.DATABASES_APPS_MAPPING:
     return settings.DATABASES_APPS_MAPPING[app_label]
   return None

至此,使用app1的model会访问default数据库,使用app2的model会访问db1数据库

同一个app下使用不同数据库

只需要在model class中修改app_label的值即可,app_label默认为此model所在app的名称


class Book2(models.Model):
 author = models.CharField(max_length=1024, blank=True, null=True)
 title = models.CharField(max_length=1024)

class Meta:
   app_label = 'db1'

来源:https://www.cnblogs.com/luozx207/p/11790659.html

标签:Django,app,配置,多,数据库
0
投稿

猜你喜欢

  • 利用Go语言实现Raft日志同步

    2024-03-15 02:55:20
  • Python anaconda安装库命令详解

    2023-01-31 16:36:36
  • python多线程分块读取文件

    2023-10-29 18:48:51
  • Servermanager启动连接数据库错误如何解决

    2024-01-13 23:46:55
  • python中列表添加元素的几种方式(+、append()、extend())

    2022-07-17 19:59:42
  • python 获取微信好友列表的方法(微信web)

    2022-02-20 10:05:21
  • python pandas loc 布尔索引示例说明

    2021-02-28 22:43:19
  • 微信小程序实现滑动删除效果

    2024-04-19 10:03:45
  • SQL提供的进行数据传输的实用程序—BCP

    2009-01-23 13:45:00
  • 小议sqlserver数据库主键选取策略

    2011-10-24 19:51:30
  • OpenCV图像缩放之cv.resize()函数详解

    2021-02-06 12:36:58
  • Python读取系统文件夹内所有文件并统计数量的方法

    2021-11-14 07:39:28
  • hmac模块生成加入了密钥的消息摘要详解

    2023-05-17 09:26:46
  • 全面解读Python Web开发框架Django

    2022-06-24 19:41:45
  • asp Access数据备份,还原,压缩类代码

    2011-03-07 11:16:00
  • mysql主从服务器同步心得体会第1/2页

    2024-01-18 13:34:20
  • 深入理解Python虚拟机中的Code obejct

    2023-05-05 02:39:31
  • WxPython界面利用pubsub如何实现多线程控制

    2021-01-28 08:10:03
  • 学习ASP.NET八天入门:第四天

    2007-08-07 13:40:00
  • 用蜜罐来阻止垃圾评论

    2007-11-06 12:35:00
  • asp之家 网络编程 m.aspxhome.com