这篇文章将为大家详细讲解有关django搭建项目配置环境和创建表的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
<强> 1。搭建项目配置环境和创建表
强>
<>强创建一个ttsx的项目
强>
django-admin startproject ttsx
在ttsx下的__init__中导入mysql
import pymysql pymysql.install_as_MySQLdb ()
配置mysql读写分离配置
#,默认值:默认的配置的是主数据库 ,& # 39;默认# 39;:,{ & # 39;才能引擎# 39;:,& # 39;django.db.backends.mysql& # 39; & # 39;才能举办# 39;:,& # 39;localhost # 39; & # 39;才能端口# 39;:,3306年, & # 39;才能用户# 39;:,& # 39;根# 39; & # 39;才能密码# 39;:,“mysql" & # 39;才能名字# 39;:,“ttsx" }, ,#配置的是从数据库 ,& # 39;奴隶# 39;:,{ & # 39;才能引擎# 39;:,& # 39;django.db.backends.mysql& # 39; & # 39;才能举办# 39;:,& # 39;localhost # 39; & # 39;才能端口# 39;:,3306年, & # 39;才能用户# 39;:,& # 39;根# 39; & # 39;才能密码# 39;:,“mysql" & # 39;才能名字# 39;:,“ttsx" },
在项目的目录下新建跑龙套/db_router。py文件如下图:
在跑龙套/db_router.py中定义一个数据库路由,实现一个策略来控制特定模型的访问性
<强>数据库路由,对位;强>
数据库路由是一个类,它提供4个方法:
<代码> db_for_read(模型、* *提示),帕拉;代码>
建议模型类型的对象的读操作应该使用的数据库。
如果一个数据库操作能够提供其它额外的信息可以帮助选择一个数据库,它将在提示字典中提供。合法的暗示的详细信息在下文给出。
如果没有建议,则返回没有。
<代码> db_for_write(模型、* *提示),帕拉;代码>
建议模型类型的对象的写操作应该使用的数据库。
如果一个数据库操作能够提供其它额外的信息可以帮助选择一个数据库,它将在提示字典中提供。合法的暗示的详细信息在下文给出。
如果没有建议,则返回没有。
<代码> allow_relation(其中obj1 methoda, * *提示),帕拉;代码>
如果其中obj1和methoda之间应该允许关联则返回真,如果应该防止关联则返回假,如果路由无法判断则返回没有。这是纯粹的
验证操作,外键和多对多操作使用它来决定两个对象之间是否应该允许一个关联。
class MasterSlaveDBRouter(对象): ,“““读写分离路由“““ , ,def db_for_read(自我,,模型,,* *提示): “““才能读数据库“““ return 才能“slave" , ,def db_for_write(自我,,模型,,* *提示): “““才能写数据库“““ return 才能“default" , ,def allow_relation(其中obj1,自我,还以为,methoda, * *提示): “““才能是否运行关联操作“““ return 才能真正的
在配置中声明读写分离路由所在的真正路径:
DATABASE_ROUTERS =, (“utils.db_router.MasterSlaveDBRouter")
=========================================================================================================================================================
<强>为类补充字段
强>
在跑龙套目录中创建一个models.py用来& # 39;& # 39;& # 39;为模型类补充字段& # 39;& # 39;& # 39;的抽象类,声明一个类是抽象类,不迁移,专门给别的表继承用的
在元选项中增添属性文摘=True
得到django.db import 模型 class BaseModel (models.Model): ,& # 39;& # 39;& # 39;为模型类补充字段& # 39;& # 39;& # 39; ,create_time=models.DateTimeField (auto_now_add=True, verbose_name=& # 39;创建时间& # 39;) ,update_time=models.DateTimeField (auto_now=True, verbose_name=& # 39;更新时间& # 39;) ,class 元: 文摘才能=True #,声明是抽象模型类,不迁移,专门给别的表继承用的
==========================================================================================================================================================