框架数据库配置

mac2022-06-30  28

文章目录

一.安装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() #删除全部
最新回复(0)