Django数据库的查看、删除,创建多张表并建立表之间关系
生活随笔
收集整理的這篇文章主要介紹了
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数据库的查看、删除,创建多张表并建立表之间关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python全栈开发第36天------
- 下一篇: 2018面向对象程序设计(Java)第3