日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2025/7/25 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 osif __name__ == '__main__':os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day08.settings")import djangodjango.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查詢的時候不區分大小寫,都能匹配到#查詢在后面列表里面的idbook=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=26print(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() #書2ret = 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創建多張表并建立表之間的關系:

創建環境的注意點如下:

第一步:創建Django項目 第二步:創建static文件夾目錄并,并在settings.py里面添加文件路徑(此步驟本項目暫時沒用到)STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR,'static') ]第三步:settings.py里面這一行注釋掉:# 'django.middleware.csrf.CsrfViewMiddleware',第四步:app01---下面的---__init__.py文件下面設置,指定對mysql數據庫的操作import pymysqlpymysql.install_as_MySQLdb() 第五步:settings里面設置連接mysql數據庫的信息,例如地址、端口、數據庫名字、用戶名、密碼 等 DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),# }'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'info','HOST':'127.0.0.1','PORT':3306,'USER':'root','PASSWORD':'root',}}第六步:models里面設置class類(即單獨設置每張表的字段、格式、以及關聯關系等)第七步:運行命令將將信息錄入的數據庫中 python3 manage.py makemigrations python3 manage.py migrate第八步:接下來就是對數據表的增、刪、改、查操作

?

models.py里面的設置:

from django.db import models# Create your models here.#出版社表 class Publish(models.Model):nid=models.AutoField(primary_key=True)name=models.CharField(max_length=32)addr=models.CharField(max_length=64)email=models.EmailField()#作者表(與AuthorDetail是一對一關系) class Author(models.Model):nid=models.AutoField(primary_key=True)name=models.CharField(max_length=32)age=models.IntegerField()#建立與AuthorDetail一對一關系authordetail=models.OneToOneField(to='AuthorDetail',to_field='nid')#作者詳細信息表 class AuthorDetail(models.Model):nid=models.AutoField(primary_key=True)phone=models.CharField(max_length=32)email=models.EmailField()#書籍表 class Book(models.Model):nid=models.AutoField(primary_key=True)price=models.DecimalField(max_digits=5,decimal_places=2)pub_date=models.DateField()#與出版社綁定一對多關系publish=models.ForeignKey(to='Publish',to_field='nid')#與作者綁定多對多關系(會生成第三張表)authors=models.ManyToManyField(to='Author')

?建完之后關系圖如下:

?

轉載于:https://www.cnblogs.com/yangzhizong/p/9621763.html

總結

以上是生活随笔為你收集整理的Django数据库的查看、删除,创建多张表并建立表之间关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。