Django數據庫的查看、刪除,創建多張表並建立表之間關系
阿新 • • 發佈:2018-09-10
-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數據庫的查看、刪除,創建多張表並建立表之間關系