Django数据库的查看、删除,创建多张表并建立表之间关系

配置以下两处,可以方便我们直接右键运行tests.py一个文件,实现对数据库操作语句的调试:

settings里面的设置:

#可以将Django对数据库的操作语法,能输出对应的的sql语句
LOGGING = {
    ‘version‘: 1,
    ‘disable_existing_loggers‘: False,
    ‘handlers‘: {
        ‘console‘:{
            ‘level‘:‘DEBUG‘,
            ‘class‘:‘logging.StreamHandler‘,
        },
    },
    ‘loggers‘: {
        ‘django.db.backends‘: {
            ‘handlers‘: [‘console‘],
            ‘propagate‘: True,
            ‘level‘:‘DEBUG‘,
        },
    }
}

tests.py的配置

# 这样设置是方便我们直接在这里里面操作运行,就可以看效果
import os

if __name__ == ‘__main__‘:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day08.settings")
    import django
    django.setup()

    # 导入models里面的Book模块,用于在这里引用
    from app01.models import *

    book=Book.objects.all().filter(publish=‘中央出版社88‘)
    print(book)
    book = Book.objects.all().filter(nid=1)
    print(book)

    #下面就可以写一些对数据库操作的命令,在本窗口就可以实现调试
    # 查询name里面以红字开头的
    book=Book.objects.all().filter(name__startswith=‘红‘)
    print(book.values_list()) #<QuerySet [(3, ‘红楼梦‘, Decimal(‘30.00‘), datetime.date(2001, 1, 12), ‘作者2‘, ‘上海出版社‘)]>
    .......

数据库的查看操作:

 #基于双下划线的模糊查询
    # 查询name里面以红字开头的
    book=Book.objects.all().filter(name__startswith=‘红‘)
    print(book.values_list()) #<QuerySet [(3, ‘红楼梦‘, Decimal(‘30.00‘), datetime.date(2001, 1, 12), ‘作者2‘, ‘上海出版社‘)]>

    #查询name里面以传字结尾的
    book=Book.objects.all().filter(name__endswith=‘传‘)
    print(book) #<QuerySet [<Book: 水浒传>, <Book: 自传>]>

    #查询name里面包含果字的
    book=Book.objects.all().filter(name__contains=‘国‘)
    print(book) #<QuerySet [<Book: 三国演义>, <Book: 国策>]>
    #name__icontains查询的时候不区分大小写,都能匹配到

    #查询在后面列表里面的id
    book=Book.objects.filter(nid__in=[1,2,3,4]) #匹配到4本
    print(book) #<QuerySet [<Book: 三国演义>, <Book: 书1>, <Book: 红楼梦>, <Book: 小红薯>]>

    #nid大于26的数据
    book=Book.objects.all().filter(nid__gt=‘26‘)
    #nid小于3的数据
    book = Book.objects.all().filter(nid__lt=3)
    #nid小于等于3的数据
    book=Book.objects.filter(nid__lte=‘3‘) #包含nid=3

    #nid大于等于26的数据
    book=Book.objects.filter(nid__gte=‘26‘) #包含nid=26
    print(book)

    #查找id在列表范围内的数据(注意,包含1和3)
    # book=Book.objects.all().filter(nid__range=[1,3])
    # print(book)

    #查找>=10 并且 <=15的值
    book=Book.objects.all().filter(price__gte=20,price__lte=24)
    print(book) #<QuerySet [<Book: 三国演义>, <Book: 书1>, <Book: 国策>]>

    #根据出版日期查询,年、月、日
    book=Book.objects.filter(pub_date__year=1997)
    book=Book.objects.filter(pub_date__month=2)
    book=Book.objects.filter(pub_date__day=11)
    book=Book.objects.filter(pub_date__day__in=[12,5])

数据库的删除操作:

    #删除
    #queryset来删除
    ret=Book.objects.filter(nid=20).delete()
    print(ret) #(1, {‘app01.Book‘: 1})
    #对象来删除
    ret = Book.objects.filter(nid=18).first() #书2
    ret = Book.objects.filter(nid=19).first().delete()
    print(ret) #(1, {‘app01.Book‘: 1})  1:本次操作总共影响了多少条记录   1:本张表里面影响的记录数

    #manager对象不行,例如:
    ret=Book.objects.delete()

    #这个可以,清空表里所有数据信息
    ret=Book.objects.all().delete()  #不要轻易使用

数据库的更改操作:

#更新(更新)
    #返回的结果是int类型,只能queryset对象来调用,对象不能来调用,返回的结果是int类型
    #例如下面first对象调用就报错:
    ret=Book.objects.all().filter(nid=9).first().update(name=‘aaa‘)  #错误的写法,不能用对象调用
    print(ret)  #报错 ‘Book‘ object has no attribute ‘update‘

    ret = Book.objects.all().filter(nid=9).update(name=‘书9999‘)
    print(ret)  #1

    ret = Book.objects.all().filter(nid=10).update(name=‘书10书10‘,price=1.1) #可以同时改几个字段
    print(ret) #1

原文地址:https://www.cnblogs.com/yangzhizong/p/9621763.html

时间: 2024-07-30 20:17:51

Django数据库的查看、删除,创建多张表并建立表之间关系的相关文章

django数据库配置及模型创建,激活

<<<数据库的连接配置>>> django配置mysql的流程: 1.创建数据库用户 (1)进入MySQL数据库    (2)创建有数据库权限的用户 (3)退出MySQL后再进入刚才创建的用户 (4)创建一个数据库  2.配置settings  找到DATABASES,做以下修改 3.修改项目目录(*含settings.py目录)下的__init__.py模块   import pymysql   pymysql.install_as_MySQLdb()   4.设置时

(转)Django 数据库

转:https://blog.csdn.net/ayhan_huang/article/details/77575186 一.数据库框架 数据库框架是数据库的抽象层,也称为对象关系映射(Object-Relational Mapper, ORM),它将高层的面向对象操作转换成低层的数据库指令,比起直接操作数据库引擎,ORM极大的提高了易用性.这种转换会带来一定的性能损耗,但ORM对生产效率的提升远远超过这一丁点儿性能降低. Django中内置的SQLAlchemy ORM就是一个很好的数据库框架

Django数据库操作ORM

python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 python manage.py runserver 0.0.0.0 python manage.py startapp a

Oracle创建表空间和表

创建表空间和表ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的.数据表空间 (Tablespace)         存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据.当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件数据表         在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层. 我们在数据库中存放数据,最

Django 数据库ORM操作 - 单表的创建,增加,删除,更改和查询

Django里面,管理数据库和sqlarchemy类似,也是通过orm框架来实现的.所有的数据库的建立,都是在model.py里面通过类来实现的. 首先看看如何创建一个单表: a. 先定义一个类,继承models.Model, 然后根据需求定义参数,这些参数的类型和变量后面会进一步阐述 models.py from django.db import models class UserInfo(models.Model):     username = models.CharField(max_l

mysql数据库的基本操作:创建数据库、查看数据库、修改数据库、删除数据库

本节相关: 创建数据库,查看数据库,修改数据库,删除数据库 首发时间:2018-02-13 20:47 创建数据库  : 语法  : create database 数据库名字[库选项]; 库选项说明  : 库选项是可选项,可以不写 库选项有两项:字符集和校对集. 库选项的字符集是数据库识别或存储数据使用的字符集.常用字符集有utf8和gbk; 库选项的校对集是数据库校对数据时使用的校对集[校对数据时依据校对集的规则来校对,比如有些校对集忽略大小写]. 但凡是创建数据库时不指定库选项的,都将使用

SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

创建数据库: 1 CREATE DATABASE Test --要创建的数据库名称 2 ON PRIMARY 3 ( 4 --数据库文件的具体描述 5 NAME='Test_data', --主数据文件的逻辑名称 6 FILENAME='E:\project\Test_data.mdf', --主数据文件的物理名称 7 SIZE=5MB, --主数据文件的初始大小 8 MAXSIZE=100MB, --主数据文件的增长的最大值 9 FILEGROWTH=15% --主数据文件的增长率 10 )

第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表

第三百七十五节,Django+Xadmin打造上线标准的在线教育平台-创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课程机构APP,写数据库操作文件models.py models.py文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from __future__ import unicode_literals from datetime import datetim

第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表

第三百七十六节,Django+Xadmin打造上线标准的在线教育平台-创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为app_operation的用户操作APP,写数据库操作文件models.py models.py文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from __future__ import unicode_literals from datetime i