54 Django 模型层(1) 单表查询
生活随笔
收集整理的這篇文章主要介紹了
54 Django 模型层(1) 单表查询
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
單表操作:
一 項目的操作順序:
1 在model.py文件中創(chuàng)建表結構
class Book(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=32)
price=models.DecimalField(max_digits=5,decimal_places=2)
publish=models.CharField(max_length=32)
pub_date=models.DateTimeField()
2 連接數(shù)據(jù)庫創(chuàng)建表
(1)先創(chuàng)建數(shù)據(jù)庫bms
(2)配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'bms', # 要連接的數(shù)據(jù)庫,連接前需要創(chuàng)建好
'USER':'root', # 連接數(shù)據(jù)庫的用戶名
'PASSWORD':'', # 連接數(shù)據(jù)庫的密碼
'HOST':'127.0.0.1', # 連接主機,默認本級
'PORT':3306 # 端口 默認3306
}
}
DATABASES = { 'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'bms',# 要連接的數(shù)據(jù)庫,連接前需要創(chuàng)建好 'USER': 'root',# 連接數(shù)據(jù)庫的用戶名 'PASSWORD': '',# 連接數(shù)據(jù)庫的密碼 'HOST': '127.0.0.1', # 連接主機,默認本級 'PORT':3306# 端口 默認3306 },'app1': {'ENGINE': 'django.db.backends.mysql','NAME': 'bms',# 要連接的數(shù)據(jù)庫,連接前需要創(chuàng)建好 'USER': 'root',# 連接數(shù)據(jù)庫的用戶名 'PASSWORD': '',# 連接數(shù)據(jù)庫的密碼 'HOST': '127.0.0.1', # 連接主機,默認本級 'PORT':3306# 端口 默認3306 },'app2': {'ENGINE': 'django.db.backends.mysql','NAME': 'bms',# 要連接的數(shù)據(jù)庫,連接前需要創(chuàng)建好 'USER': 'root',# 連接數(shù)據(jù)庫的用戶名 'PASSWORD': '',# 連接數(shù)據(jù)庫的密碼 'HOST': '127.0.0.1', # 連接主機,默認本級 'PORT':3306# 端口 默認3306 } } 不同app 可以配置不同的數(shù)據(jù)庫
(3)數(shù)據(jù)庫遷移
python manage.py makemigrations
python manage.py migrate
KEY: Django在執(zhí)行遷移命令時只會為settings中install_app中的應用中的models創(chuàng)建表結構
3 啟動項目: python manage.py runserver
二 表記錄操作
(1) 添加記錄
# 方式1
book=Book(title="",price="",publish="",pub_date="2012-12-12")
book.save()
# 方式2
book=Book.objects.create(title="",price="",publish="",pub_date="2012-12-12")
print(book.id)
print(book.title)
(2) 查詢記錄
KEY:queryset數(shù)據(jù)類型
Book.objects.all() # 返回queryset對象 [obj,obj2,obj3,...]
Book.objects.all()first() # Book模型類對象
Book.objects.all().last() # Book模型類對象
Book.objects.filter(title="python") # 返回queryset對象 [obj,obj2,obj3,...]
Book.objects.get(title="python") # Book模型類對象
Book.objects.exclude(title="python") # 返回queryset對象 [obj,obj2,obj3,...]
Book.objects.all().count() # 返回int
Book.objects.all().order_by("-price")# 返回queryset對象
Book.objects.all().order_by("-price").reverse() # 返回queryset對象
Book.objects.all().exist() # 返回布爾值
Book.objects.all().values("title") # 返回queryset對象 [{"title":""},{"title":""}]
Book.objects.all().values_list("title","price") # 返回queryset對象 [("python",122),("linux",233)]
Book.objects.all().values("price").distinct()
模糊查詢:
Book.objects.filter(price__gt=100)
Book.objects.filter(price__lt=100)
Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__range=[100,200])
Book.objects.filter(title__startswith="py")
Book.objects.filter(title__contains="py")
Book.objects.filter(title__icontains="py")
Book.objects.filter(pub_date__year="2012")
(3) 刪除
Book.objects.all().delete()
Book.objects.get(id=1).delete()
(4) 更新
Book.objects.filter(id__gt=5).update(price=100)
例子:
1 查詢老男孩出版社出版過的價格大于200的書籍
Book.objects.filter(price__gt=200,publish="老男孩出版社")
2 查詢2017年8月出版的所有以py開頭的書籍名稱
Book.objects.filter(title__startswith="py",pub_date__year=2017,pub_date__month=8).values("title")
3 查詢價格為50,100或者150的所有書籍名稱及其出版社名稱
Book.objects.filter(price__in=[50,100,150]).values("title","publish")
4 查詢價格在100到200之間的所有書籍名稱及其價格
Book.objects.filter(price__range=[100,200]).values("title","price")
5 查詢所有人民出版社出版的書籍的價格(從高到低排序,去重)
Book.objects.filter(publish="人民出版社").order_by("-price").values("price").distinct()
?
單表查詢連接數(shù)據(jù)庫具體步驟:
1.創(chuàng)建表,在app model.py文件中,創(chuàng)建
2.數(shù)據(jù)庫中,先創(chuàng)建好庫,命名為bms
?3.配置settings
4.確保配置文件中已經配置好了自己的應用
5.app 應用中,__init__.py 文件中加上:
import?pymysql
pymysql.install_as_MySQLdb() 6.執(zhí)行 python manage.py makemigrations python manage.py migrate 7.可能出現(xiàn)的問題和解決辦法?
轉載于:https://www.cnblogs.com/knighterrant/p/10209923.html
總結
以上是生活随笔為你收集整理的54 Django 模型层(1) 单表查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python的DEBUG LOG
- 下一篇: SQLServer删除登录帐户