1. 程式人生 > >Django數據庫的查看、刪除,創建多張表並建立表之間關系

Django數據庫的查看、刪除,創建多張表並建立表之間關系

-c 清空 sta 大於 imp from 數據庫操作 命令 數據庫的操作

配置以下兩處,可以方便我們直接右鍵運行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數據庫的查看、刪除,創建多張表並建立表之間關系