参考文档:
* https://docs.djangoproject.com/en/1.2/topics/db/multi-db/#topics-db-multi-db-routing
* http://blog.sina.com.cn/s/blog_3fbe78a60100p68a.html
目的:新项目中实现 按app实现数据库的分离
以非IC模块product为例
1. setting.py中加入
... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'xiaofei_ecgoo', # Or path to database file if using sqlite3. 'USER': 'xiaofei', # Not used with sqlite3. 'PASSWORD': '*****', # Not used with sqlite3. 'HOST': '192.168.0.8', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '3306', # Set to empty string for default. Not used with sqlite3. }, 'product': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'xiaofei_product', # Or path to database file if using sqlite3. 'USER': 'xiaofei', # Not used with sqlite3. 'PASSWORD': '*******', # Not used with sqlite3. 'HOST': '192.168.0.8', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '3306', # Set to empty string for default. Not used with sqlite3. } } ...
2.增加dbrouter.py
class MyAppRouter(object): """A router to control all database operations on models in the myapp application""" def db_for_read(self, model, **hints): "Point all operations on myapp models to 'other'" if model._meta.app_label == 'product': return 'product' return None def db_for_write(self, model, **hints): "Point all operations on myapp models to 'other'" if model._meta.app_label == 'product': return 'product' return None def allow_relation(self, obj1, obj2, **hints): "Allow any relation if a model in myapp is involved" if obj1._meta.app_label == 'product' or obj2._meta.app_label == 'product': return True return None def allow_syncdb(self, db, model): "Make sure the myapp app only appears on the 'other' db" if db == 'product': return model._meta.app_label == 'product' elif model._meta.app_label == 'product': return False return None class MasterSlaveRouter(object): """A router that sets up a simple master/slave configuration""" def db_for_read(self, model, **hints): "Point all read operations to a random slave" return 'default' def db_for_write(self, model, **hints): "Point all write operations to the master" return 'default' def allow_relation(self, obj1, obj2, **hints): "Allow any relation between two objects in the db pool" db_list = ('default','product') if obj1._state.db in db_list and obj2._state.db in db_list: return True return None def allow_syncdb(self, db, model): "Explicitly put all models on all databases." return True
3.配置settings.py
DATABASE_ROUTERS = ['new_ecgoo.dbrouter.MyAppRouter', 'new_ecgoo.dbrouter.MasterSlaveRouter']
注意:
写道
刚调试时,有几个页面一直报错,后发现数据库分离后,在读关联数据时,有几个写法要注意:
如:
ic = Ic.objects.filter(u__username=name)
应改为:
user = User.objects.get(username = name)
ic = Ic.objects.filter(u=user)
如:
ic = Ic.objects.filter(u__username=name)
应改为:
user = User.objects.get(username = name)
ic = Ic.objects.filter(u=user)
相关推荐
在本例中,我们需要从数据库中读取数据表,这可以通过Django的ORM(对象关系映射)系统实现,它允许我们以Python对象的方式操作数据库。 3. ZTree插件: ZTree是一款基于JavaScript的树形插件,适用于Web前端展示...
本文将介绍在Python框架Django中如何进行数据库查询以及将查询结果渲染到Web页面上的过程。Django是一个高级的、开源的Web应用框架,它遵循模型-视图-控制器(MVC)设计模式,提供了快速开发Web应用的便捷性。 首先...
总结来说,Python Django与Postgres Citus的结合提供了强大的分布式多租户数据库解决方案。通过利用Django的ORM和Citus的分布式能力,开发者能够构建可扩展且高效的应用,满足大量用户的需求。尽管存在一些挑战,但...
django view接口实现excel表导入到数据库,主要运用xlrd包读取到excel表单的内容,然后再数据库里创建excel表的数据类型。我在里面增加了一层判断,就是如果库里面有excel表里面人或数据的话就会更新改变的数据,...
在本实例中,我们将探讨如何使用Django框架从MySQL数据库中读取数据并将其呈现到前端页面上。Django是一个强大的Python Web开发框架,而MySQL则是一种广泛使用的关系型数据库管理系统。结合两者,我们可以构建动态的...
通过以上步骤,你就能够在Django项目中成功地连接MySQL数据库并实现文件上传功能。记住,安全性和性能优化在实际生产环境中非常重要,例如,使用合适的权限设置、限制文件类型、处理大文件上传等。
本教程将详细介绍如何使用Django与MySQL协同工作,实现数据的插入操作。 首先,确保你已经安装了Python、Django和MySQL的相关库。Python的安装是基础,Django可以通过pip来安装:`pip install django`。对于MySQL,...
首先,设置多数据库需要在Django的settings.py文件中定义DATABASES字典。在这个字典里,可以定义一个默认的数据库,同时也可以指定其他额外的数据库。例如,如果你需要两个数据库,一个用于应用数据,另一个用于用户...
在本项目中,我们主要探讨如何使用Python的Web框架Django来实现用户登录、注册功能,同时连接后台数据库,构建一个完整的主页,并加入忘记密码和验证码等增强安全性的重要特性。以下将详细介绍这些知识点: 1. ...
1.Python开发工具之pycharm起步。...6.成功实现浏览器页面与数据库交互操作。 ...... 备注:上述过程图文并茂,以至于半小时学会起步到走路,同时让你知道开发网站居然可以如此简单和快乐。继续努力!
本文将深入探讨如何在Django中实现模型字段的加密和解密,以及如何利用luojilab-django-mirage-field-5d96836这样的库来简化这个过程。 首先,理解Django模型字段。在Django中,模型是数据库表的面向对象表示。每个...
要实现这一功能,我们首先需要导入Django的相关模块: ```python from django.db import connections from django.db.models.base import ModelBase from django.db.models.fields import * ``` 接着,我们可以...
总结来说,这个基于Django的数据库监控系统涉及到了Python基础、Django框架的使用、数据库管理、Web开发实践、版本控制以及监控技术等多个方面的知识。通过深入学习和理解这些内容,可以构建出高效、可扩展的数据库...
基于python+Django+MYSQL实现的图书管理系统代码+数据库(高分毕设)基于python+Django+MYSQL实现的图书管理系统代码+数据库(高分毕设)基于python+Django+MYSQL实现的图书管理系统代码+数据库(高分毕设)基于...
【Python-基于inception和django的数据库web管理平台】 这个项目是使用Python的两个著名框架——Django和Inception——构建的一个数据库Web管理平台。Django是一个强大的、高性能的Web框架,它允许开发者快速地创建...
根据提供的文件信息,本文将详细介绍Django多数据库配置的方法和...通过以上步骤,我们可以实现Django项目中的多数据库配置,并通过自定义路由器来管理不同APP的数据存储需求,使得数据的存储和管理更加灵活和高效。
【标题】:“Python电脑控制...总之,这个项目是一个全面的Django实战案例,涵盖了Web开发的多个方面,对于提升你的Python和Django技能大有裨益。通过深入研究并运行这个项目,你将对Python Web开发有更深入的理解。
在使用Django框架开发多线程应用程序时,可能会遇到数据库连接耗尽的问题。这一问题在Web项目中可能不会遇到,因为Web请求会在处理结束时关闭数据库连接,但非Web项目由于没有固定的请求结束事件,可能会导致数据库...
在Python和Django的项目中,可能使用了如psycopg2(PostgreSQL)、pyodbc(ODBC兼容数据库)、mysql-connector-python(MySQL)等库来实现数据库连接和操作。 【毕业设计】 毕业设计是高等教育中的一项重要任务,...
python的django框架实现数据库链接与数据库基本操作