建立資料庫模型
開頭有提到,除非你想使用內建的 SQLite
,否則要用 PostgreSQL
、MySQL
等等資料庫,可到官方Database看一下。
基本上 Django
也是採用 ORM
方式,這與 FastAPI
共同點。
下方是採用 SQLite
建立資料庫欄位
py
from django.db import models
class Mytable(models.Model):
first = models.CharField(max_length=200)
last = models.CharField(max_length=200)
def __str__(self):
return self.first
class Item(models.Model):
item=models.CharField(max_length=25)
description = models.TextField()
pub_date = models.DateField()
# 這欄位關聯上一個資料表內容
reporter = models.ForeignKey(Mytable, on_delete=models.CASCADE)
def __str__(self):
return self.item
TIP
引數
on_delete
是設定欄位關聯性
的操作,相關參數可以網路搜尋 參考資訊。資料表的類別設定,可參考 MDN -Using models、還有 Django官方 -Field types。
上傳資料表後透過 python shell 新增資料
透過 shell
上傳雖然是官方文件所寫,但如果資料庫是SQLite
可使用 DB Browser for SQLite 或 Postman 工具來操作,也可以透過 Django rest framwork 框架。
cmd
py manage.py shell
from members.models import Mytable
Mytable.object.all()
keyin=Mytable(name='Evan')
keyin.save()
Django 官方也是這麼教 Python shell,覺得很不習慣,建議還是使用介面工具會比較不容易出錯。
下方是設定MySQL
cmd
pip install pymysql
py
DATABASE=[
'default': {
'ENGINE': 'django.db.backend.mysql',
'NAME': 'db_name',
'USER': 'root',
'PASSWORD': 'db_password',
'HOST': '127.0.0.1',
'PORT': '3306',
]
重整資料表
當資料表更新或資料變動時,必須使用重整遷移方式來告訴 Django
有異動。
cmd
python manage.py makemigrations myapp
再來需要紀錄重整更新。
cmd
py manage.py migrate
提醒
重整、紀錄資料這兩個指令,只要變更任何資料都會用到。