django连接mysql数据库并调用,django配置多个mysql
最近在进行框架项目开发的时候,遇到了需要连接两个关系型数据库数据库的问题,下面这篇文章主要给大家介绍了关于姜戈项目配置连接多个数据库的相关资料,需要的朋友可以参考下
一个应用对应一个默认数据库,若连接其他数据库用。使用()
Author.objects.using(db02 ).全部()
1、在项目settings中增加数据库配置
# settings.py
数据库={
默认 : {
引擎姜戈街:号。db。后端。神谕,
名称: orcl19c :
用户 : 用户名01 ,
密码 : 密码01 ,
主机 : 110.10.1.11 ,
端口 : 1511,
},
db_2: {
引擎姜戈街:号。db。后端。神谕,
名称: orcl19c :
用户 : 用户名02 ,
密码 : 密码02 ,
主机 : 120.20.2.22 ,
端口 : 1512,
}
}
# 以下我的项目改成项目名,默认系统默认值不用修改
数据库路由器=[MyProject.database_router .DatabaseAppsRouter]
数据库应用程序映射={
应用程序01: 默认,
app02: db_2 ,
}
2、在项目根目录下Myproject/Myproject 新建数据库路由文件database_router.py
直接复制以下代码,无需修改
从django.conf导入设置
数据库映射=设置。数据库_应用程序_映射
类数据库应用路由器(对象):
一个路由器,用于控制不同型号的所有数据库操作
数据库。
以防设置中没有设置应用程序。数据库应用映射,路由器
将退回到"默认"数据库。
设置示例:
DATABASE _ APPS _ MAPPING={ app 1 : db1 , app2: db2}
定义数据库读取(自身,模型,* *提示):
将所有读取操作指向特定数据库。
如果模型. meta。数据库映射中的app _ label :
返回数据库_映射[模型. meta.app_label]
不返回
定义写数据库(自身,模型,* *提示):
将所有写操作指向特定的数据库。
如果模型. meta。数据库映射中的app _ label :
返回数据库_映射[模型. meta.app_label]
不返回
def allow_relation(self,obj1,obj2,* *提示):
允许使用相同数据库的应用程序之间的任何关系。
db _ obj 1=数据库映射。得到(obj 1 ._meta.app_label)
db _ obj 2=数据库映射。得到(obj 2 ._meta.app_label)
如果db_obj1和db_obj2:
如果db_obj1==db_obj2:
返回真实的
else:
返回错误的
不返回
def allow_syncdb(自身、数据库、模型):
确保应用程序只出现在相关的数据库中。
如果数据库映射中的数据库。值():
返回DATABASE_MAPPING.get(模型. meta.app_label)==db
否则如果模型. meta。数据库映射中的app _ label :
返回错误的
不返回
def allow_migrate(self,db,app_label,model=None,* *提示):
确保身份验证应用程序仅出现在"身份验证数据库"中
数据库。
如果数据库映射中的数据库。值():
返回数据库映射。get(app _ label)==db
数据库映射中的elif app _ label :
返回错误的
不返回
3、使用inspectdb反向生成各app的model类之后,配置model类对应要链接的数据库
反向生成models.py命令:
python管理。py inspectdb-数据库db1表名1 app01/models.py
python管理。数据库DB2表名2应用程序02/模型。巴拉圭
# 编辑app01下的models.py:
类名(型号。型号): #该模型使用系统默认值数据库
id=型号CharField(primary_key=True,max_length=100,blank=True,null=True)
名称=型号CharField(max_length=32,primary_key=True,unique=True)
Meta:级
#app_label=app01 #由于该模型连接系统默认值数据库,所以在此无需指定
db_table=names
# 编辑app02下的models.py:
类Classnum(型号。型号): #该模型使用系统默认值数据库
id=型号CharField(primary_key=True,max_length=100,blank=True,null=True)
classnum=模型CharField(max_length=32,primary_key=True,unique=True)
Meta:级
app_label=app02
db_table=classnum
4、同步数据库
# 同步系统默认值节点数据库,只运行不带-数据库参数的命令,不对其他数据库进行同步
python manage.py进行迁移
python manage.py迁移
# 同步db02节点数据库:
python manage.py进行迁移
python管理。py migrate-database=db02
5、若要连接配置外的数据库
Author.objects.using(其他).全部()
my_object.save(使用=传统用户)
my_object.delete(使用=传统用户)
移动对象到另一个数据库时会发生主键冲突,可以使用对象主键方法清除主键再保存对象
p=人(姓名=弗雷德)
保存(使用=第一)
p.pk=无#清除主键。
p.save(使用=second) #编写一个
总结
到此这篇关于姜戈项目配置连接多个数据库的文章就介绍到这了,更多相关姜戈配置连接多数据库内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。