[Python学习笔记] Django中数据库的相关操作

由原来直接通过sql语句来执行各种操作,改为通过ORM来操作数据库,也就是不需要通过数据库的相关语句来操作增删改查,而是通过设置类的方式来创建数据表存储数据

1. 变更Django关联数据库

在settings.py中修改databases部分,engine中对应的数据库类型是mysql,数据库名为demo,并设置用户名和密码

 2. 在navicate或者命令行中创建对应的数据库demo:

在navicate中直接创建数据库:

或者通过命令行创建demo数据库:

命令: -->  mysql -u root -p 输入密码

           -->  create database demo default character set utf8

3. 安装mysql驱动 -- pymysql

在venv环境中安装 pymysql

在app1中的__init__.py文件中添加mysql驱动pymysql , 并确保pymysql已经被安装

4. 创建数据表

在app1中的models.py文件中,添加表对应的类,比如:

名为Person的表格,对应需要创建一个Person类,并在此类中添加对应的字段(即表格中的字段)

from django.db import models


# Create your models here.
class CreateUpdate(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)  # 默认自动添加
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True  #CreateUpdate不对应任何表


class Person(CreateUpdate):  # 一个表对应一个类
    # first_name, last_name, created_at, updated_at
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)


class Order(CreateUpdate):
    # order_id, order_desc
    order_id = models.CharField(max_length=30, db_index=True)  # order_id是外键
    order_desc = models.CharField(max_length=120)

1)执行命令: python manage.py makemigrations

可见,生成了迁移文件Order, Person,但是并没有生成数据库

2)执行命令: python mange.py migrate  --> 生成数据表

在navicate中可以通过右键中的设计表选项,查看数据类型

5. 增删改查

 可以直接通过manage.py的shell命令行来操作数据库的增删改查

1) python manage.py shell 进入命令行

2) from app1.models import Person,Order

3) Person.objects.create(first_name = 'andy', last_name= 'feng')   # 增加数据

4) p = Person(firs_name = 'xiaoke',last_name = 'wang')  # 增加数据

       p.save()

5) 查找数据:

       Person.objects.all()   # 获取所有数据

       Person.objects.get(first_name = 'andy')  # 查找某些符合条件的数据, 用于获取一条数据, 返回的是一个对象, 如果数据

       不存在,或者多条数据存在,会抛出异常

       Person.objects.filter(id__gt=1)    # 获取id大于1的数据, 用于获取多条数据, 返回的是queryset,需要进行for循环,

       才能取出里面的值

       Person.objects.filter(id__gt=1).order_by('last_name')   # 获取id大于1的数据,并按照last_name进行排序, 

     返回的是queryset,需要进行for循环, 才能取出里面的值

6) 修改数据:

       先获得数据: p = Person.objects.get(id=2)

       再修改数据: p.first_name = 'Jay'

       保存数据: p.save()

7)  删除数据:

       p.delete()

 

6. 如果删除了数据库中的表,想重新生成,怎么办?

1. 删除app下的migrations文件夹

2. 删除数据库中表 django_migrations 中对应app的记录

3. run命令 python manage.py makemigrations appName

4. run命令 python manage.py migrate

就可以重新生成表了

      

更多详细内容,请参考:https://www.cnblogs.com/yanjieli/p/9462702.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值