Skip to content
On this page

建立資料庫模型

開頭有提到,除非你想使用內建的 SQLite,否則要用 PostgreSQLMySQL 等等資料庫,可到官方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

  1. 引數 on_delete 是設定 欄位關聯性 的操作,相關參數可以網路搜尋 參考資訊

  2. 資料表的類別設定,可參考 MDN -Using models、還有 Django官方 -Field types

上傳資料表後透過 python shell 新增資料

透過 shell 上傳雖然是官方文件所寫,但如果資料庫是SQLite可使用 DB Browser for SQLitePostman 工具來操作,也可以透過 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

提醒

重整、紀錄資料這兩個指令,只要變更任何資料都會用到。