iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Django项目怎么配置连接多个数据库
  • 333
分享到

Django项目怎么配置连接多个数据库

2023-06-30 14:06:46 333人浏览 薄情痞子
摘要

今天小编给大家分享一下Django项目怎么配置连接多个数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一个APP对应一个

今天小编给大家分享一下Django项目怎么配置连接多个数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一个APP对应一个默认数据库,若连接其他数据库用".using()"

Author.objects.using('db02').all()

1、在项目settings中增加数据库配置

# settings.py DATABASES = {  'default': {   'ENGINE': 'djanGo.db.backends.oracle',     'NAME': 'orcl19c',      'USER': "username01",     'PASSWord': "password01",     'HOST': "110.10.1.11",     'PORT': 1511, },  'db_2': {   'ENGINE': 'django.db.backends.oracle',     'NAME': 'orcl19c',      'USER': "username02",     'PASSWORD': "password02",     'HOST': "120.20.2.22",     'PORT': 1512, }}# 以下MyProject改成项目名,默认default不用修改DATABASE_ROUTERS = ['MyProject.database_router.DatabaseAppsRouter']DATABASE_APPS_MAPPING = {    'app01': 'default',    'app02': 'db_2',}

2、在项目根目录下Myproject/Myproject 新建数据库路由文件database_router.py

直接复制以下代码,无需修改

from django.conf import settings DATABASE_MAPPING = settings.DATABASE_APPS_MAPPINGClass 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

3、使用inspectdb反向生成各app的model类之后,配置model类对应要链接的数据库

反向生成models.py 命令:

python manage.py inspectdb --database db1 TableName1 > app01/models.py Python manage.py inspectdb --database db2 TableName2 > app02/models.py
# 编辑app01下的models.py:class Names(models.Model): #该model使用default数据库    id=models.CharField(primary_key=True,max_length=100, blank=True, null=True)    name=models.CharField(max_length=32,primary_key=True,unique=True)        class Meta:        #app_label = 'app01' #由于该model连接default数据库,所以在此无需指定        db_table = 'names'        # 编辑app02下的models.py:class Classnum(models.Model): #该model使用default数据库    id=models.CharField(primary_key=True,max_length=100, blank=True, null=True)    classnum=models.CharField(max_length=32,primary_key=True,unique=True)        class Meta:        app_label = 'app02'        db_table = 'classnum'

 4、同步数据库

# 同步default节点数据库,只运行不带 --database参数的命令,不对其他数据库进行同步 python manage.py makemigrations python manage.py migrate # 同步db02节点数据库: python manage.py makemigrations python manage.py migrate --database=db02

5、若要连接配置外的数据库

Author.objects.using('other').all()my_object.save(using='legacy_users')my_object.delete(using='legacy_users')

移动对象到另一个数据库时会发生主键冲突,可以使用obj.pk方法清除主键再保存对象 

>>> p = Person(name='Fred')>>> p.save(using='first')>>> p.pk = None # Clear the primary key.>>> p.save(using='second') # Write a

以上就是“Django项目怎么配置连接多个数据库”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Django项目怎么配置连接多个数据库

本文链接: https://www.lsjlt.com/news/329652.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django项目怎么配置连接多个数据库
    今天小编给大家分享一下Django项目怎么配置连接多个数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一个APP对应一个...
    99+
    2023-06-30
  • Django项目配置连接多个数据库的方法记录
    一个APP对应一个默认数据库,若连接其他数据库用".using()" Author.objects.using('db02').all() 1、在项目setti...
    99+
    2024-04-02
  • Django怎么配置Mysql数据库连接
    这篇文章主要介绍“Django怎么配置Mysql数据库连接”,在日常操作中,相信很多人在Django怎么配置Mysql数据库连接问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Django怎么配置Mysql数据...
    99+
    2023-07-05
  • django单个app多数据库怎么配置
    在Django中,可以为单个app配置多个数据库。以下是配置单个app多数据库的步骤: 在settings.py中定义多个数据库连...
    99+
    2024-03-11
    django 数据库
  • c#项目怎么连接数据库
    在 c# 项目中连接数据库需要以下步骤:添加数据库参考;创建连接字符串;创建数据库连接;打开数据库连接;使用数据库连接;关闭数据库连接。 如何在 C# 项目中连接数据库 在 C# 项目...
    99+
    2024-05-12
    c#
  • Django配置Mysql数据库连接的实现
    目录前言操作路线结束语前言 Django原生自带的数据库支持是SQLite,但是我们现在常用的数据库一般是mysql,mangodb等数据库。所以我们要改变数据库的链接,从而达到使用mysql作为django的数据库链接...
    99+
    2023-03-08
    Django连接Mysql数据库 Django连接Mysql
  • spring怎么连接多个数据库
    在Spring中,可以使用多个数据源来连接多个数据库。下面是一些步骤:1. 在application.properties或appl...
    99+
    2023-10-20
    spring 数据库
  • plsql怎么配置数据库连接
    要配置PL/SQL Developer以连接到数据库,请按照以下步骤操作: 打开PL/SQL Developer。 单击工具...
    99+
    2024-04-09
    plsql 数据库
  • Oracle怎么连接配置数据库
    这篇文章主要介绍“Oracle怎么连接配置数据库”,在日常操作中,相信很多人在Oracle怎么连接配置数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle怎么连接...
    99+
    2024-04-02
  • Redis怎么配置多个数据库
    这篇文章主要介绍“Redis怎么配置多个数据库”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis怎么配置多个数据库”文章能帮助大家解决问题。前言redis 默认有 0-16 号数据库,一般我们...
    99+
    2023-06-29
  • Springboot2.0配置JPA多数据源连接两个mysql数据库方式
    目录1. 目录结构及配置2. 配置文件3. DataSourceConfigurer类4. 主数据源配置5. 从数据源配置6.User实体类模板7.dao层模板8.service模板...
    99+
    2024-04-02
  • 怎么配置mysql数据库连接池
    配置mysql数据库连接池的方法在CATALINA_HOME/conf/server.xml中添加如下配置信息;<!--声明连接池-->    <Resource name="jdbc/mysql&qu...
    99+
    2024-04-02
  • web.config中怎么配置数据库连接
    今天就跟大家聊聊有关web.config中怎么配置数据库连接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. appSettings<appSettings> ...
    99+
    2023-06-17
  • oracle数据库连接池怎么配置
    在Oracle数据库中,连接池是用于管理数据库连接的重要组件,它可以提高应用程序的性能和可伸缩性。以下是配置Oracle数据库连接池...
    99+
    2024-03-12
    oracle
  • sqlserver数据库连接池怎么配置
    在SQL Server中,连接池的配置是通过连接字符串来实现的。以下是一些常用的连接池配置选项: Pooling=True:启用...
    99+
    2024-04-09
    sqlserver
  • sqlite数据库连接池怎么配置
    在SQLite中,由于它是一个嵌入式数据库,通常不需要使用连接池来管理数据库连接。每个数据库连接都是一个文件,可以直接在应用程序中打...
    99+
    2024-04-09
    sqlite
  • plsql怎么配置oracle数据库连接
    要配置Oracle数据库连接,首先需要确保已经安装了Oracle客户端软件。然后按照以下步骤进行配置:1. 打开Oracle客户端软...
    99+
    2023-10-18
    plsql oracle数据库
  • 使用Jfinal怎么连接多个数据库
    本篇文章为大家展示了使用Jfinal怎么连接多个数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 添加mssql-jdbc-7.4.1.jar和mysql-connector-java-8.0....
    99+
    2023-06-14
  • sqlserver连接远程数据库怎么配置
    在 SQL Server 中连接远程数据库的配置主要涉及以下几个方面: 确保远程数据库服务器允许远程连接:在远程数据库服务器上,...
    99+
    2024-04-09
    sqlserver 数据库
  • 网站怎么配置redis连接数据库
    要配置Redis连接数据库,需要进行以下步骤:1. 安装Redis:首先需要安装Redis数据库,可以从Redis官方网站(http...
    99+
    2023-08-30
    redis 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作