Django中一个项目里怎么使用两个数据库

在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接。

1. 修改项目的 settings 配置

在 settings.py 中配置需要连接的多个数据库连接串

2. 设置数据库的路由规则方法

在settings.py中配置DATABASE_ROUTERS

1DATABASE_ROUTERS = [‘Prject.database_router.DatabaseAppsRouter‘]

Project: 建立的django项目名称(project_name)

database_router: 定义路由规则database_router.py文件名称, 这个文件名可以自己定义

DatabaseAppsRouter: 路由规则的类名称,这个类是在database_router.py文件中定义

3. 设置APP对应的数据库路由表

每个APP要连接哪个数据库,需要在做匹配设置,在settings.py文件中做如下配置:

以上的report, regs是项目中的 APP名,分别指定到 ora1, default的数据库。

为了使django自己的表也创建到你自己定义的数据库中,你可以指定 : admin, auth, contenttypes, sessions 到设定的数据库中,如果不指定则会自动创建到默认(default)的数据库中.

4. 创建数据库路由规则

在项目工程根路径下(与 settings.py 文件一级)创建database_router.py文件:

5.原生sql 的使用:

6. Models创建样例

在各自的 APP 中创建数据表的models时,必须要指定表的 app_label 名字,如果不指定则会创建到default中配置的数据库名下,

如下:

在app01下创建models

在app02下创建models

7. 生成数据表

在使用django的 migrate 创建生成表的时候,需要加上 –database 参数,如果不加则将 未 指定 app_label 的 APP的models中的表创建到default指定的数据库中,如:

将app01下models中的表创建到db01的数据库”db_01”中

./ manage.py  migrate--database=db01

将app02下models中的表创建到db02的数据库”db_02”中

./ manage.py  migrate--database=db02

将app03下models中的表创建到default的数据库”sqlite3”中

./ manage.py  migrate

以上创建完成后,其它所有的创建、查询、删除等操作就和普通一样操作就可以了,无需再使用类似

models.User.objects.using(dbname).all()

这样的方式来操作

原文地址:https://www.cnblogs.com/pp8080/p/12169193.html

时间: 2024-11-07 03:44:49

Django中一个项目里怎么使用两个数据库的相关文章

eclipse中一个项目引用另一个项目的方法

有时候我们一个项目会依赖于另一个项目的类库和资源,如下图项目pds-prrs依赖于pds-fw和pds-srv中的类和包 想要在pds-prrs中引入其他两个项目的方法为: 右键pds-prrs->build path->configure build path->project选项卡->.点击add,将另外两个项目加入即可 效果如下

C++中一个常用的句型(两个for(;;)语句连用的重要性)

在一些简单的C++编程中,经常会用到两个for(;;)语句连用的情况,这是一个常用句型,因此感觉也非常重要.下面举两个例子说明一下: 例1.用两个for(;;)语句来进行数组元素大小的排序 #include"stdafx.h" #include<iostream> using namespace std; int main() { int i,j,t=0; int a[10]={0}; //用for循环连续输入10个数存放在数组中 for(i=0;i<10;i++)

Eclipse中一个项目调用另一个项目的资源

如果一个项目A想要引用另一个项目B的资源的话,按照一下步骤进行设置: 右键点击项目A---->>>Build Path--->>>Configure Build Path...--->>>在弹出的对话框中选择Projects选项卡--->>>点击Add--->>>选择项目B进行添加. 备注: 如果项目A关联了项目B,再使用项目B关联项目A,那么项目A和项目B上就会显示红色的感叹号表示警告.

C# 在Visual Studio中一个项目有两个Main函数, 怎么设置哪个是入口?取代csc /main选项。

namespace ConsoleApp1{class Program{static void Main(string[] args){Console.WriteLine("Program");Console.ReadKey();}} class Program1{static void Main(string[] args){Console.WriteLine("Program1");Console.ReadKey();}}}然后在菜单Project->**

C++一个项目里有两个CPP文件,想在一个CPP文件里调用另一个CPP文件的计算结果,怎么实现啊?

把1.cpp和2.cpp放到同一目录下,例如:1.cpp 代码如下#include <iostream> int main(){ void ChangeFunction(int* input, int n); void PrintData(int* input, int n); int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; PrintData(a, 10); ChangeFunction(a, 10); PrintData(a, 10); return

用django创建一个项目

首先你得安装好python和django,然后配置好环境变量,安装python就不说了,从配置环境变量开始 1.配置环境变量 在我的电脑处点击右键,或者打开 控制面板\系统和安全\系统 -> 左边导航栏的"高级系统设置"->环境变量 -->然后你会看到下面这个界面 -> 点击这个path,然后点编辑 然后找到C:\Python27文件夹,将这个文件夹添加进去. 2.安装django 打开cmd,执行 pip install django 或者 把 这个包下载下来

怎么让一个项目里swift与OC可以兼容混合开发?

在苹果推出了swift语言之后,很多人担心OC很快会被取代,但是苹果方面表示2年内不会摒弃OC.但现在也快了啊.有的开发团队已经开始基于swift开发,但是有很多旧的框架还没来得及用swift写出来,并且某些swift的功能你还不会写,想用OC写.因此在swift开发的程序中时不时会用到OC的类,怎么让两门语言在一个程序里无缝衔接? 其实很方便 如果你不是在董铂然博客园看到本文请 点击查看原文 如图这是一个新建的swift项目,里面直接拖入了一个SVProgressHUD框架 因为swift语言

将一个项目导入到另一个项目里

一. 作为lib库导入 首先找到需要导入的项目的中的project.properties文件,设置android.library=true: 到现有项目中,右键----properties----Android,在下面的library选项卡中点 Add, 然后选择需要导入的库即可. 二.  将项目作为jar包导入到项目中 的右键要导出的项目----Export---JAVA---JAR file 只勾选src文件夹和assets文件夹,如果assets文件夹没东西不选也行.如果用到AIDL技术的

HibernateUtil.java,用于打开和关闭session,可在每一个项目里复用

1 package cn.jbit.auction.dao; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 7 public class HibernateUtil { 8 // 初始化一个ThreadLocal对象 9 private static final ThreadLocal sessionTL =