博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django_mysql_配置
阅读量:4554 次
发布时间:2019-06-08

本文共 3615 字,大约阅读时间需要 12 分钟。

配置

1. 安装Pymysql

pip install PyMySQL

 

然后在项目同名_init__添加

from pymysql import install_as_MySQLdbinstall_as_MySQLdb()

如下

2. 让Django使用mysql,修改setting配置,如下:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',        'HOST': '127.0.0.1',  # 数据库主机        'PORT': 3306,  # 数据库端口        'USER': 'root',  # 数据库用户名        'PASSWORD': 'mysql',  # 数据库用户密码        'NAME': 'django_demo'  # 数据库名字    }}

3. 在自己数据中创建一个djangi_demo

create database django_demo default charset=utf8;

 

定义模型类

1. 创建一个新的应用,为booktest,在models.py 文件中定义模型类,然后去setting注册应用

python manage.py startapp booktest

from django.db import models#定义图书模型类BookInfoclass BookInfo(models.Model):    btitle = models.CharField(max_length=20, verbose_name='名称')    bpub_date = models.DateField(verbose_name='发布日期')    bread = models.IntegerField(default=0, verbose_name='阅读量')    bcomment = models.IntegerField(default=0, verbose_name='评论量')    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')    class Meta:        db_table = 'tb_books'  # 指明数据库表名        verbose_name = '图书'  # 在admin站点中显示的名称        verbose_name_plural = verbose_name  # 显示的复数名称    def __str__(self):        """定义每个数据对象的显示信息"""        return self.btitle#定义英雄模型类HeroInfoclass HeroInfo(models.Model):    GENDER_CHOICES = (        (0, 'male'),        (1, 'female')    )    hname = models.CharField(max_length=20, verbose_name='名称')    hgender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')    hcomment = models.CharField(max_length=200, null=True, verbose_name='描述信息')    hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书')  # 外键    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')    class Meta:        db_table = 'tb_heros'        verbose_name = '英雄'        verbose_name_plural = verbose_name    def __str__(self):        return self.hname

1) 数据库表名,我们要自己定义,可通过db_table 指明数据库表名,不使用他默认创建的,Django默认以 小写app应用名_小写模型类名 为数据库表名。

2) django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。

3) 字段类型

4) 选项

null是数据库范畴的概念,blank是表单验证范畴的

5) 外键

一般我用CASCADE

在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models中包含了可选常量:

  • CASCADE 级联,删除主表数据时连通一起删除外键表中数据

  • PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据

  • SET_NULL 设置为NULL,仅在该字段null=True允许为null时可用

  • SET_DEFAULT 设置为默认值,仅在该字段设置了默认值时可用

  • SET() 设置为特定值或者调用特定方法,如

from django.conf import settingsfrom django.contrib.auth import get_user_modelfrom django.db import modelsdef get_sentinel_user():    return get_user_model().objects.get_or_create(username='deleted')[0]class MyModel(models.Model):    user = models.ForeignKey(        settings.AUTH_USER_MODEL,        on_delete=models.SET(get_sentinel_user),    )

DO_NOTHING 不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常

 

迁移

将模型类同步到数据库中。

1> 生成迁移文件

python manage.py makemigrations

注:这里可以指定迁移某一个APP

例如users APP:

python manage.py makemigrations users

2> 同步到数据库

python manage.py migrate

 

添加测试数据

1> 添加图书信息

insert into tb_books(btitle,bpub_date,bread,bcomment,is_delete) values('射雕英雄传','1980-5-1',12,34,0),('天龙八部','1986-7-24',36,40,0),('笑傲江湖','1995-12-24',20,80,0),('雪山飞狐','1987-11-11',58,24,0);

2> 添加英雄信息

insert into tb_heros(hname,hgender,hbook_id,hcomment,is_delete) values('郭靖',1,1,'降龙十八掌',0),('黄蓉',0,1,'打狗棍法',0),('黄药师',1,1,'弹指神通',0),('欧阳锋',1,1,'蛤蟆功',0),('梅超风',0,1,'九阴白骨爪',0),('乔峰',1,2,'降龙十八掌',0),('段誉',1,2,'六脉神剑',0),('虚竹',1,2,'天山六阳掌',0),('王语嫣',0,2,'神仙姐姐',0),('令狐冲',1,3,'独孤九剑',0),('任盈盈',0,3,'弹琴',0),('岳不群',1,3,'华山剑法',0),('东方不败',0,3,'葵花宝典',0),('胡斐',1,4,'胡家刀法',0),('苗若兰',0,4,'黄衣',0),('程灵素',0,4,'医术',0),('袁紫衣',0,4,'六合拳',0);

转载于:https://www.cnblogs.com/py-web/p/10906472.html

你可能感兴趣的文章
任意类型转换为IntPtr
查看>>
$.each 和$(selector).each()的区别
查看>>
11-EasyNetQ之多态发布和订阅
查看>>
iOS App 的运行周期
查看>>
XSS Script
查看>>
qt中文乱码问题
查看>>
sed 删除最后几行 和删除指定行 awk使用
查看>>
LeetCode: Candy
查看>>
单词统计
查看>>
web基础,用html元素制作web页面
查看>>
[LeetCode] String to Integer (atoi)
查看>>
移动端设置-----rem
查看>>
文件上传与下载
查看>>
洛谷 P2239 螺旋矩阵
查看>>
POJ2559-Largest Rectangle in a Histogram
查看>>
网络爬虫
查看>>
struts2 文件下载的处理
查看>>
电梯演讲视频
查看>>
面向对象基本特征的来历
查看>>
几种更新(Update语句)查询的方法【转】
查看>>