上上篇>Django學習筆記----環(huán)境搭建基于Windows
上一篇>Django學習筆記----快速入門
修改settings.py配置
在環(huán)境搭建篇, 我們已經(jīng)安裝了mysql-client包
安裝好后, 在settings.py
中將代碼做如下替換
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'mydatabase',
}
}
DATABASES = {
'default': {
# 數(shù)據(jù)庫引擎名稱
'ENGINE': 'django.db.backends.mysql',
'USER': 'root',
'PASSWORD':'123456',
# 數(shù)據(jù)庫名稱
'NAME':'test',
# 數(shù)據(jù)庫主機地址, 此外還可以設(shè)置端口
'HOST':'localhost'
}
}
在App中建立模型
在app中的models.py
中建立模型類
如注釋所示, 在Cmder中,依次使用
python manage.py migrate
創(chuàng)建表結(jié)構(gòu)
python manage.py makemigrations App_name
讓Django在數(shù)據(jù)庫中建立對應的表
class Mysite(models.Model):
# use 'python manage.py migrate' create table Structure
# use 'python manage.py makemigrations App_name(Not class name)'
# let Django konw what had been changed
title = models.CharField(max_length=100)
url = models.URLField()
author = models.CharField(max_length=50)
num = models.IntegerField()
之后查看數(shù)據(jù)庫, 可以看到已經(jīng)建立好的表.
這里面的表不僅有剛剛建立的模型, 還有Django自己建立的表. 模型建立的表的命名格式是AppName_ModelName
通過Django進行數(shù)據(jù)庫基本操作
我們通過Django
的shell
工具來演示對數(shù)據(jù)庫的基本操作, 在Cmder中鍵入以下命令啟動shell
python manage.py shell
啟動后導入你建立的模型的包, 如from myTest.models import *
獲取所有數(shù)據(jù)
# 相當于SELECT * FROM TABLE
In [2]: m = Mysite.objects.all()
In [3]: m
Out[3]: <QuerySet []>
增加一條數(shù)據(jù)
In [4]: m = Mysite(title='django', num=2)
In [5]: m.save()
在前面獲取數(shù)據(jù)時, 表是空的, 經(jīng)過增加數(shù)據(jù)之后, 我們再查詢一次
In [6]: m = Mysite.objects.all()
In [7]: m
Out[7]: <QuerySet [<Mysite: Mysite object>]>
我們將該數(shù)據(jù)取出來
In [8]: m[0].title
Out[8]: 'django'
查詢數(shù)據(jù)
查詢不同字段只需更換get()的字段名
# 獲取單條
In [9]: m = Mysite.objects.get(num=2)
In [10]: m.title
Out[10]: 'django'
# 也可以使用Filter, 相當于SQL語句中的Where
m = Mysite.objects.filter(title='django')
修改數(shù)據(jù)
查詢出來的數(shù)據(jù)可以進行更改, 選中對應的字段進行賦值并保存即可
In [25]: m.title = 'flask'
In [26]: m.save()
In [27]: m.title
Out[27]: 'flask'
也可以直接使用Update函數(shù)進行修改
# 修改單條
Mysite.objects.filter(num=2).update(title='Google')
# 修改整列
Mysite.objects.all.update(title='Google')
刪除數(shù)據(jù)
刪除數(shù)據(jù)同樣簡單, 刪除成功后再次查詢該記錄就會報錯. 刪除數(shù)據(jù)同樣可以使用前面查詢數(shù)據(jù)的filter
方法和all
方法來實現(xiàn)對查詢的多條結(jié)果進行刪除
In [28]: m.delete()
Out[28]: (1, {'myTest.Mysite': 1})
In [29]: m = Mysite.objects.get(num=2)
---------------------------------------------------------------------------
DoesNotExist Traceback (most recent call last)
<ipython-input-29-96b21651e5d5> in <module>()
----> 1 m = Mysite.objects.get(num=2)
對查詢結(jié)果進行排序
# 升序排列
Mysite.objects.all().order_by("num")
# 降序排列
Mysite.objects.all().order_by("-num")
也可以在模型中設(shè)置排序
class Mysite(models.Model):
......
class Meta:
ordering = ['num']
顯示數(shù)據(jù)
在查詢結(jié)果中, 我們得到的是一個列表, 可以使用Python的列表的方法進行遍歷, 相信大家都會的
既然結(jié)果是列表, 那么可以用切片來限制返回的結(jié)果也是在意料之內(nèi)的
Mysite.objects.all()[0:2]