Django项目怎么配置连接多个数据库
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,今天小编给大家分享一下Django项目怎么配置连接多个数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面
千家信息网最后更新 2026年10月31日Django项目怎么配置连接多个数据库
今天小编给大家分享一下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 None3、使用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项目怎么配置连接多个数据库"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
数据
数据库
项目
配置
知识
篇文章
同步
多个
内容
命令
对象
节点
生成
不同
不对
很大
不用
代码
参数
大部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
哈尔滨大商圈互联网科技有限公司
互联网科技工作委员会
科技类互联网
互联网金融公司科技
互联网科技排名
互联网女皇 腾讯科技
上游互联网科技
互联网前沿科技
中正互联网科技招聘
新华互联网科技校企合作
宁夏众和广鑫互联网科技有限公司
佳云科技和互联网广告
黑科技闪耀互联网之光
苏州铭阳互联网科技有限公司
广州新华互联网科技学校电竞方面
领航科技大厦互联网公司
厦门江牛科技互联网
广州梦谷互联网科技有限公司领导
宁波允成互联网科技有限公司
株洲百竞科技的互联网营销顾问
科技互联网
科技信息互联网
互联网金融 科技金融
互联网科技排名
亿账通互联网科技
兼蜜互联网科技
互联网科技公司营业执照怎么办理
图游互联网科技
山东蛋芒互联网科技有限公司
互联网科技大会大佬