zoukankan      html  css  js  c++  java
  • Django

    Django - day01 Model的增删改查找

    得益于Django的ORM模型,用面向对象的思想来操作数据库使得数据库的操作一切变得简洁了很多。

    0. 建表

    在应用下的models.py中建立一个表单如下:

    class 表名(models.Model):
        name = models.CharField(max_length=20,verbose_name='用户名')
        email = models.EmailField(verbose_name='邮箱')
        address = models.CharField(max_length=100,verbose_name='联系地址')
        message = models.CharField(max_length=500,verbose_name='留言信息')
    

    这里涉及到Django提供的类型,依次点击到模块models.fields中可以看到__all__变量,里面就存放着诸多Django支持的表项类型

    接着输入以下命令在数据库中创建模型表单

    python manage.py makemigrations 应用名称
    python manage.py migrate

    这里值得一提的是,在makemigrations后会生成一些文件,这些文件可以用来查看Django具体对数据库做了些什么操作。例如,在我修改address最大长度为120后,根据makemigrations的结果输入0002,得到的结果如下:

    manage.py@django_start > sqlmigrate message 0002
    "D:usrPyCharm 2017.3.3in
    unnerw.exe" ...
    BEGIN;
    --
    -- Change Meta options on user_message
    --
    --
    -- Alter field address on user_message
    --
    ALTER TABLE `message_user_message` MODIFY `address` varchar(120) NOT NULL;
    COMMIT;
    
    Following files were affected
    Process finished with exit code 0
    

    具体如何实现的可以不管,但是要知道,Django这里提供了一个方式供你查看它做了什么,以及给了你一个让你修改的可能。

    1. 增加、修改数据

    还是ORM模型,首先得实例化:

    test = user_message()
    

    接着就像操作对象一样,操作这个表里的项:

    test.name = 'Thisisname'
    test.address='Thisisaddress'
    test.email = 'Thisisemail'
    test.message='Thisismessage'
    

    或者是使用像cpp中构造函数的方式创建表:

    test=user_message(name='lilei',email='1@163.com',address='what',message='')
    

    然后是保存:

    test.save()
    

    2. 删除、查找数据

    一样的思路,这里直接对数据库模块进行操作:

    test = user_message.objects.get(id=1)
    test.delete()
    

    诸如此类的操作:

    Question.objects.all()
    Question.objects.get(id=1) 等价 Question.objects.get(pk=1)
    Question.objects.filter(id=1,other='')可以查找满足两个条件的项
    

    若查找的数据不存在会抛出异常

  • 相关阅读:
    1025WHERE执行顺序以及MySQL查询优化器
    1025基础REDIS
    1025关于explain的补充1
    1021mysql 全外连接
    python开发进程:进程开启方式&多进程
    python开发面向对象进阶:反射&内置函数
    python开发socket套接字:粘包问题&udp套接字&socketserver
    python开发面向对象基础:封装
    python开发模块基础:异常处理&hashlib&logging&configparser
    python开发面向对象基础:接口类&抽象类&多态&钻石继承
  • 原文地址:https://www.cnblogs.com/leihui/p/8765757.html
Copyright © 2011-2022 走看看