文章目录
- 一.安装pymysql
- 二.创建数据库用户
- 三.ORM
- 四.模型的创建及迁移
- 五.数据库的增删改查
- 5.1增
- 5.2 查
- 5.3 改
- 5.4 删
一.安装pymysql
这个要在虚拟环境django环境下,我这里创建的django环境名是djiangoapp,首先通过workon到所在的环境,然后通过pip install pymysql来实现,我这里已经安装了就不演示了。
二.创建数据库用户
首先创建一个数据库,但是这个最好是加上格式,因为我的电脑是配置好的,所以不需要配置了。
create user '...'@'host' identified by '...'
grant all privileges on CRM.* to 'thomas'@'%' identified by 'thomas';
这个是创建一个用户,并把所有的权限给这个用户,当然这个命令要在root用户下面进行调用,其中的%是表示可以远程控制。
同时如果想快速通过命令进入的话可以用下面的这个语句。
mysql -u'用户名' -p -A '数据库名'
比如我自己创建的用户名为thomas,数据库名为CRM
mysql -uthomas -p -A CRM
同时我们要在setting中修改这个。
三.ORM
ORM就是可以通过pymysql语句代替sql语句执行数据库的操作,当然我们要在init文件中导入
四.模型的创建及迁移
from django.db import models
# Create your models here.
class Student(models.Model): # 创建一个模型类
name = models.CharField(max_length=20)
age = models.SmallIntegerField(null=True)
sex = models.SmallIntegerField(default=1) # 是指默认值
qq = models.CharField(max_length=20)
phone = models.CharField(max_length=20)
c_time = models.DateTimeField("创建时间", auto_now_add=True) # 自动添加一个时间
def __str__(self):
return self.name
这是对应app下的model中代码,这个对应关系就是ORM的对应关系。
但是这还没有完,我们还要在settings看app是否注册了。
注册完之后我们就到了最重要的部分,就是迁移。
首先,我们迁移是需要所在的环境的,就是django环境
python manage.py makemigrations
通过这个使所有的app全部迁移,如果想指定单独的app,在后面加上相应的app的名字就可以了。
当然如果我们想迁移生效还要加上一个语句。
python manage.py migrate
这个也可以指定app名。
五.数据库的增删改查
因为交互式ipython比较适合我们使用,所以我们想通过ipython来操作,所以我们需要安装ipython,我们首先要在指定的环境和文件下来操作,就是djiangoapp下cd到CRM下,通过代码
pip install ipython
来安装。
我们如果想要调用的话需要代码
python manage.py shell
来启动。
5.1增
首先我们要导入模型,Student其实就是相当一个类,也对应数据库的表,s就相当于实例了一个对象,也是相当于表中的一条数据,但是无论怎么增加,我们都要s.save().就是保存一下才能生效。
这就是结果。
也可以通过这种先创建一个空实例然后我们在一一赋值的方式来用。(也要save)
5.2 查
res = Student.objects.all()
print(res.query)
#查询所有#
Student.objects.get(pk=1)
#查询单个#
Student.objects.filter(sex=1)
pk为主键。
因为get只能查询单条,这里的filter相当于数据库时学的where
5.3 改
该主要也是两种
s = Student.objects.get(name='')
s.phone = ''
s.save()
单条修改用get多条修改用filter
Student.objects.filter(sex=1).update(name = 'hahaha')
5.4 删
s = Student.objects.get(pk=1)
s.delete()
#删掉单条
Student.objects.filter(qq=1).delete()
#删掉多条
Student.objects.all().delete()
#删除全部