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

Posted yangzhizong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Django数据库的查看删除,创建多张表并建立表之间关系的主要内容,如果未能解决你的问题,请参考以下文章

mysql如何查看当前分区表的情况?

主外键多表查询demo

mysql workbench中建立表,怎么添加数据?还有做java web 怎么连接到这个表中?

mysql workbench中建立表,怎么添加数据?还有做java web 怎么连接到这个表中?

SQL 基础之创建其他方案对象(十五)

django之ORM数据库操作