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中操作数据库了。































.

目录
相关文章
|
3月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
150 13
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1093 11
|
5月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
469 0
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
161 3
|
3月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
786 152
|
4月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
3月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。

热门文章

最新文章