手把手程式實作分享系列:Django SQLite資料庫設定集簡單操作
手把手教你簡單設定Django SQLite資料庫
1. 先把你的Django架構設定好
還不知道怎麼開始的人可以看看下面這一篇:
手把手程式實作分享系列:Django初體驗
2. 資料庫教學 Models
Model : 定義一些資料庫的東西 ( ORM ),這層通常是直接和資料有關。
我們在這邊也寫的是如何定義出資料庫中的結構(schema),並且透過 Django 中的指令去建立資料庫。
Django 預設是使用 SQLite ,如果想要修改為其他的資料庫,可以在 settings.py 裡面進行修改。之後再來一篇firebase的。
首先,請先在 models.py 裡面增加下方程式碼 (下圖)
from django.db import models
# Create your models here.
class Music(models.Model):
song = models.TextField(default="song")
singer = models.TextField(default="AKB48")
last_modify_date = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True) class Meta:
db_table = "music"
default : 代表默認值,也就是如果你沒有指定的話會用默認值。
auto_now_add : 新增時會幚你自動加上建立時間。
auto_now : 資料有更新時會幚你自動加上更新的時間。
更多可以參考 Django fields
接著在命令提示字元 (cmd ) 底下輸入
python manage.py makemigrations
python manage.py migrate
makemigrations : 會幚你建立一個檔案,去記錄你更新了哪些東西。
migrate : 根據 makemigrations 建立的檔案,去更新你的 DATABASE 。
執行完上面的指令之後,
你可以使用SQLiteBrowser 或 PyCharm 觀看 DATABASE,
你會發現多出一個 music 的 table ( 如下圖 )
- *如果這邊沒有表生出來 表示你可能忘記把你的app放入setting的 INSTALLED_APPS裡面拉** 這邊自己要注意唷!
有沒有注意到我們明明在 models.py 裡面就沒有輸入 id ,可是 database 裡面卻有 id 欄位,
這是因為 Django 預設會幫你帶入,所以可以不用設定。
Admin Site
Django 內建有後台管理介面。
請先確定 settings.py 裡的 INSTALLED_APPS 裡有 django.contrib.admin
INSTALLED_APPS = [
'django.contrib.admin',
......
]
設定 URL
接著使用命令提示字元 (cmd ) 建立超級使用者
python manage.py createsuperuser
註冊 model
我們可以註冊 model,讓後台可以操作 database
請在 admin.py 裡面新增下方程式碼,這段程式碼只是去註冊 model 而已
from django.contrib import admin# Register your models here.
from django.contrib import admin
from musics.models import Musicadmin.site.register(Music)
Django ORM
資料庫設定好了,接下來我們要來玩玩資料庫了
以上的東西全部做完之後,這邊才能夠開始做以下操作。
先了解什麼是 CRUD ,他分別代表 Create, Retrieve, Update, Delete,
Django QuerySet API 可以讓你簡單的處理 CRUD 。
直接使用 Python Console 簡單介紹 Django ORM
在view.py 做以下操作的時候,記得必須先 import 你的 models
from musics.models import Music
Create
創造一個新的資料
Music.objects.create(song=’song1', singer=’SKE48')
用SQLiteBrowser 或 PyCharm 觀看 DATABASE,如下圖,成功多了一比資料
或者
Music.objects.create()
為什麼沒帶參數也可以新增呢?
這是因為 models.py 裡的 song 以及 singer 有設定 default ,所以可以不用帶入參數。
Read
一次把資料全部讀進來
Music.objects.all()
Music.objects.get(pk=3)
Music.objects.filter(id=1)
使用的時候objects.all()是回傳回一個list
data=Music.objects.all()
如果我們要單獨的項目,可以這樣操作
for i in range(len(data1)):
print(data[i].singer)
讓所有在Music裡面的singer資訊全部印出來。
Update
data=Music.objects.filter(id=1)
data.update(song=’song_update’)
執行完上述程式碼,就會發現資料被更新了 ( 如下圖 )
Delete
data=Music.objects.filter(id=4)
data.delete()
執行完上述程式碼,就會發現資料被刪除了