Django项目同时连接多个不同的数据库(7)

简介: 【7月更文挑战第7天】在Django项目中配置连接多个数据库,你需要:1. 在`settings.py`中配置多个数据库,2. 在`settings.py`内设置数据库路由,指定每个应用使用的数据库,

项目需要连接多个不同的数据库,不同的应用操作不同的库。

以下是具体的修改步骤:

一、修改setting.py中的 DATABASES

DATABASES = {
    'default': {
    },
    'mysql': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'zz', # 数据库名称
        'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1
        'PORT': 3306, # 端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'root', # 数据库密码
    },
    'postgress': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    },
}


2、还是在setting.py文件中配置应用对应的数据库


  • # 配置数据库操作路由
  • DATABASE_ROUTERS = ['application.database_router.DatabaseAppsRouter']
  • DATABASE_APPS_MAPPING = {
  • 'app1':'mysql',
  • 'app2':'postgress',
  • }

3、在setting.py同目录下新建 database_router.py文件

image.png


添加以下代码

  • # -*- coding: utf-8 -*-
  • from django.conf import settings
  • DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
  • class DatabaseAppsRouter(object):
  • """
  •    A router to control all database operations on models for different
  •    databases.
  •    In case an app is not set in settings.DATABASE_APPS_MAPPING, the router
  •    will fallback to the `default` database.
  •    Settings example:
  •    DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'}
  •    """
  • def db_for_read(self, model, **hints):
  • """"Point all read operations to the specific database."""
  • if model._meta.app_label in DATABASE_MAPPING:
  • return DATABASE_MAPPING[model._meta.app_label]
  • return None
  • def db_for_write(self, model, **hints):
  • """Point all write operations to the specific database."""
  • if model._meta.app_label in DATABASE_MAPPING:
  • return DATABASE_MAPPING[model._meta.app_label]
  • return None
  • def allow_relation(self, obj1, obj2, **hints):
  • """Allow any relation between apps that use the same database."""
  •        db_obj1 = DATABASE_MAPPING.get(obj1._meta.app_label)
  •        db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label)
  • if db_obj1 and db_obj2:
  • if db_obj1 == db_obj2:
  • return True
  • else:
  • return False
  • return None
  • def allow_syncdb(self, db, model):
  • """Make sure that apps only appear in the related database."""
  • if db in DATABASE_MAPPING.values():
  • return DATABASE_MAPPING.get(model._meta.app_label) == db
  • elif model._meta.app_label in DATABASE_MAPPING:
  • return False
  • return None
  • def allow_migrate(self, db, app_label, model=None, **hints):
  • """
  •        Make sure the auth app only appears in the 'auth_db'
  •        database.
  •        """
  • if db in DATABASE_MAPPING.values():
  • return DATABASE_MAPPING.get(app_label) == db
  • elif app_label in DATABASE_MAPPING:
  • return False
  • return None



ok!然后就可以创建模型,在对应的app中操作数据库了。































.

目录
相关文章
|
15天前
|
存储 Go API
使用GoFrame连接和操作TDengine时序数据库
通过使用GoFrame框架和TDengine Go驱动,我们可以方便地连接和操作TDengine时序数据库。无论是插入、查询还是分析时序数据,都可以通过简单的API调用来实现。GoFrame提供了强大的Web开发功能,结合TDengine的高性能时序数据存储和查询能力,可以构建高效、可扩展的时序数据应用。
|
13天前
|
NoSQL 关系型数据库 PHP
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
124 72
|
20天前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
16 7
|
18天前
|
Java 数据库连接 数据库
数据库以及其他项目配置
该项目配置了数据库连接和MyBatis设置,并解决了配置文件加载问题。启动类使用 `@SpringBootApplication` 注解,可通过 `@ComponentScan` 指定扫描包。Lombok 自动生成 getter/setter 等方法,简化代码。Result 实体类用于统一返回格式。用户模块包括注册与登录功能,使用 MD5 加密密码、Spring Validation 参数校验及 JWT 认证。JWT 工具类处理令牌生成与解析,并通过拦截器验证。Redis 优化登录功能,利用 ThreadLocal 存储用户信息。此外,还包括文章模块的相关功能,如文章分类管理、
35 2
|
19天前
|
SQL 数据库 开发者
|
19天前
|
存储 SQL 数据库
自连接:数据库查询中的镜像技术
【8月更文挑战第31天】
9 0
|
19天前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
12 0
|
2月前
|
SQL 数据库 Python
Django框架数据库ORM查询操作(6)
【7月更文挑战第6天】```markdown Django ORM常用数据库操作:1) 查询所有数据2) 根据ID查询 3) 精确查询 4) 分页排序
50 1
|
前端开发 数据库 Python
【Django】Django之ORM数据库查询及获取数据操作
【Django】Django之ORM数据库查询及获取数据操作
74 0
|
SQL 缓存 数据库
python-django 数据库查询方法大全
  __exact 精确等于 like ‘aaa’   __iexact 精确等于 忽略大小写 ilike ‘aaa’   __contains 包含 like ‘%aaa%’   __icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
129 0