返回顶部
首页 > 资讯 > 后端开发 > Python >django操作多数据库
  • 299
分享到

django操作多数据库

操作django 2023-01-30 22:01:37 299人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1、    添加数据库路由分配文件 在项目文件夹里创建‘database_router’文件。将下面的代码复制到该文件里。 from Django.conf import settings DATABASE_MAPPING =

1、    添加数据库路由分配文件

项目文件夹里创建‘database_router’文件。将下面的代码复制到该文件里。

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

 

2、在settings.py文件中配置多数据库

# Database

# https://docs.djanGoproject.com/en/2.1/ref/settings/#databases

 

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.Mysql',

        'NAME': 'django_test',

        'HOST': '127.0.0.1',

        'USER': 'root',

        'PASSWord': '123456',

        'PORT': '3306',

},

#配置第二个数据库

    'test': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'xsanjiaocheng',

        'HOST': '127.0.0.1',

        'USER': 'root',

        'PASSWORD': '123456',

        'PORT': '3306',

    }

}

 

#设置数据库路由,将django_test改为你项目的名称。

DATABASE_ROUTERS = ['django_test.database_router.DatabaseAppsRouter']

#配置数据库与app的对应关系

DATABASE_APPS_MAPPING = {

    # example:

    # 'app_name':'database_name',

    # 'app01': 'test',

    'app01': 'default',

    'app02': 'test',

}

 

3、    在对应的app里的models.py文件里正常创建数据表即可(在创建表时尽量不要使用同样的表名)

app01中的models.py:

class django_test_1(models.Model):

    abc = models.CharField(max_length=20)

    class Meta:

        app_label='app01'

app02中的models.py:

class test_1(models.Model):

    tests= models.CharField(max_length=20)

 

4、    生成迁移文件

和以前一样:python manage.py makemigrations

5、    迁移数据库

迁移时需指定数据库名

Python manage.py migrate  database=test

 

      如果针对已创建好的数据库创建对应的models.py文件不用生成迁移文件,直接执行“python manage.py  inspectdb > app02/models.py  --database=test”的命令即可。

  在django 2.1.1版本中需要执行“python manage.py  inspectdb  --database=test > app02/models.py ”

6、操作数据库

1)手动选择数据库

django_test_1.objects.using('default').create(abc='hdajh')

 

2)自动选择数据库

和以前一样不加using()。

7、 配置urls.py

导入对应app的views.py的文件。最好命名个别名,或者给views.py文件重命名。

其他使用和以前一样。

 

--结束END--

本文标题: django操作多数据库

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

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

猜你喜欢
  • django操作多数据库
    1、    添加数据库路由分配文件 在项目文件夹里创建‘database_router’文件。将下面的代码复制到该文件里。 from django.conf import settings DATABASE_MAPPING =...
    99+
    2023-01-30
    操作 django
  • CMDB之Django 数据库ORM操作
    CMDB实现数据展示功能部分代码。 views.py def asset(request):     asset = Asset.ob...
    99+
    2024-04-02
  • django的数据库ORM进阶操作
    1、数据库查询的三种方式 正向查询: (1)获取全部数据all     v1=models.UserInfo.objects.all().first()    #取出Querryset类型数据,里面是对象,需循环取出     v1.ut  ...
    99+
    2017-08-05
    django的数据库ORM进阶操作 数据库入门 数据库基础教程 数据库 mysql
  • django中操作mysql数据库的方法
    目录1.准备工作(django连接数据库)2.django操作数据库(ORM)2.1 ORM简介2.2 创建表和字段2.3 字段的增删改查2.4 单表数据的增删改查2.4.1单表数据的查询2.4.2单表数据的增加2.4....
    99+
    2024-04-02
  • mysqldump导出多数据库操作
    导出数据库 1.mysqldump导出所有库 mysqldump -uroot -ppassword -A > mysql_dump.sql 2.导出所有+忽略特殊库 mysql -e "show d...
    99+
    2024-04-02
  • MySQL数据库的多表操作
    目录一、 数据库的多表操作二,操作一对一一对多一、 数据库的多表操作 数据库的多表关系: 一对一一对多多对一多对多 二,操作 一对一 建立数据表person和card,设置perso...
    99+
    2022-11-13
    MySQL数据库 MySQL多表操作
  • Django项目优化数据库操作总结
    目录合理的创建索引设置数据库持久连接 减少SQL的执行次数仅获取需要的字段数据使用批量创建、更新和删除,不随意对结果排序参考网址:Django官方数据库优化 使用 QuerySet...
    99+
    2024-04-02
  • Python Django 数据库的相关操作详解
    目录前言创建对象方式一:方式二:更新对象方式一:方式二:方式三:查询检索全部对象:条件过滤:方式一:方式二:检索单个对象:总结前言 上篇已经介绍过模型相关操作,并创建好了数据库及相关...
    99+
    2024-04-02
  • django基础之数据库操作方法(详解)
    Django 自称是“最适合开发有限期的完美WEB框架”。本文参考《Django web开发指南》,快速搭建一个blog 出来,在中间涉及诸多知识点,这里不会详细说明,如果你是第一次接触Django ,本文...
    99+
    2022-06-04
    详解 操作方法 数据库
  • 【MySQL】数据库——库操作
    文章目录 1. 创建数据库[IF NOT EXISTS] 的使用 2. 删除库3. 数据库的编码问题查看系统默认支持的字符集查看系统默认支持的校验集只查看 database的校验集指定编码...
    99+
    2023-10-20
    数据库 mysql
  • Django与多个数据库交互
    定义数据库 在Django中使用多个数据库的第一步是告诉Django您将要使用的数据库服务器。 数据库可以有您选择的任何别名。但是,别名 default 有着特殊的意义。Django使用别名为 default 为默认数据库。 例如 set...
    99+
    2023-01-30
    多个 数据库 Django
  • Django使用多数据库For pyth
    1、定义数据库 在django项目中, 一个工程中存在多个APP应用很常见;有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接。在Django的setting中使用DATABASES设置定义数据库,可以将数据库映射到特定...
    99+
    2023-01-31
    Django pyth
  • Python Django ORM 深潜:掌控数据库操作的艺术
    Django 对象关系映射器 (ORM) 是一个强大且灵活的工具,它允许 Django 开发人员以面向对象的方式与数据库交互。通过使用 ORM,开发人员可以将数据库表映射到 Python 类,并通过这些类来访问和操作数据库中的数据。 Dj...
    99+
    2024-04-02
  • laravel数据库操作
    了解 Laravel 某个模块的内部实现,最好的切入点就是从 composer.json 开始,从里面我们主要可以得到以下信息:require 字段可以知道相关的依赖包extra.laravel.providers 可以知道它的服务提供者的...
    99+
    2016-06-17
    laravel数据库操作 数据库入门 数据库基础教程 数据库 mysql
  • 2、操作数据库
    操作数据库 操作数据库 > 操作数据库中的表 > 操作数据库中表的数据 MySQL关键字不区分大小写 2.1、操作数据库(了解) 创建数据库 CREATE DATABASE westos; 删除数据库 DROP DATABASE ...
    99+
    2022-01-25
    2 操作数据库 数据库入门 数据库基础教程 数据库 mysql
  • MySql数据库操作
    MySql数据库操作 –登录MySql:——–Windows环境进入cmd后输入mysql –h localhost –u root –p,再输入密码就可以启动mysql;其中localhost是...
    99+
    2024-04-02
  • 操作MySQL数据库
    SQL是什么    SQL是结构化查询语言,这是一种计算机语言,用于存储,操纵和检索存储在关系数据库中的数据。    SQL是关系数据库系统的标准语言。所有关系型数据...
    99+
    2024-04-02
  • Oracle11G_JAVA操作数据库
    JAVA访问Oracle两种方式:JDBC-ODBC桥、JDBC;JDBC驱动:位于oracle主目录下lib目录中;JDBC-ODBC桥:JAVA程序通过桥将JDBC调用转换成ODBC调用,ODBC指向o...
    99+
    2024-04-02
  • Hyperf操作数据库
    Hyperf操作数据库 对于一个 MVC 框架来说,连接操作各种数据库是最基本的功能。而对于 Swoole ,其实我们前面并没有讲很多关于数据库方面的东西,毕竟这不是我们这个系列的主要内容。但之前我们也讲过 连接池 相关的内容,如果小伙伴们...
    99+
    2023-09-15
    php 数据库 mysql
  • laravel 数据库操作
    一:数据库配置 数据库配置文件放置在config/database.php 文件中 1:基础配置 'connections' => [ 'mysql' => [ 'driver' => 'mysql', #数据...
    99+
    2023-09-07
    laravel php Powered by 金山文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作