django 資料庫建表流程,與表結構

2022-03-05 15:13:08 字數 4358 閱讀 3748

目錄建立表結構

多表關連的設定

自建立關聯表方法

自建表 和 manytomanyfield 聯合使用

databases = 

}

import pymysql

pymysql.install_as_mysqldb()

warnings: 

?: (mysql.w002) mysql strict mode is not set for database connection 'default'

hint: mysql's strict mode fixes many data integrity problems in mysql, such as data truncation upon insertion,

by escalating warnings into errors. it is strongly recommended you activate it.

#解決辦法一

options: ,

#解決辦法二

#去設定 mysql檔案的的my.ini

sql-mode="strict_trans_tables,no_auto_create_user,no_engine_substitution"

#在輸入命令重啟mysql(windos系統)

資料庫遷移命令

#資料庫遷移 命令(建議一起執行)

python manage.py makemigrations

python manage.py migrate

#每次對models.py檔案操作,都盡量執行遷移命令

from django.db import models

class publisher(models.model):

pid = models.autofield(primary_key=true)

name = models.charfield(max_length=32, unique=true)

"""出版社 表設計 表名 publisher

pid為出版社的id,設定為主鍵,預設為int型別 primary_key=true 欄位名為pid

name為出版社的名字,限制字元長度32,設定唯一屬性unique=true 欄位名為name

還可以新增,**,辦公位址等字段,我這裡就不新增了

"""class book(models.model):

title = models.charfield(max_length=32)

pub = models.foreignkey("publisher",on_delete=models.cascade)

"""圖書 表設計 表名 book

title為書名 限制字元長度32

put為外來鍵 models.foreignkey ("publisher")關聯publisher表 on_delete=models.cascade設定級聯關係

"""cid 主鍵

cname 約束32位的字元,unique=true 約束唯一

"""class student(models.model):

sid = models.autofield(primary_key=true)

s_name = models.charfield(max_length=32,null=false)

gender = models.charfield(max_length=2,default='男')

class_id = models.foreignkey("class",on_delete=models.cascade)

"""sid 主鍵

s_name 字元 32位 非空約束

gendef 字元 2位 預設設定為男

class 外來鍵 關聯class表 , 級聯設定

#要實現作者表關聯出版社和書記表,建立第四章表,來建立練習

#第一種 django幫我們生成第三張表

class author(models.model):

name = models.charfield(max_length=32)

books = models.manytomanyfield('book') # 不在author表中生產字段,自動生成第三張表

"""name 作者名字 32為字元

books book和author多對多的關係。books是author跟book關聯的所有物件。books的作用是在

author和book中建立乙個中間的關係物件,放在第三張表中,再根據這個中間的關係來獲取book中關聯的物件

"""author 關聯 author作者表 外來鍵 級聯設定

book 關聯 book圖書表 外來鍵 級聯設定

date 日期屬性

可以新增更多字段,就操作比麻煩

"""#呼叫方法

author_obj = models.author.objects.create(name=author_name) # 只插入book表中的內容

author_obj.books.set(books) # 設定作者和書籍多對多的關係

class author(models.model):

name = models.charfield(max_length=32)

books = models.manytomanyfield('book',through='authorbook') # through='authorbook' 不在author表中生產字段,

也不生產第三張表

class authorbook(models.model):

author = models.foreignkey(author, on_delete=models.cascade)#外來鍵關聯 author表 級聯設定

book = models.foreignkey(book, on_delete=models.cascade)#外來鍵關聯 book表 級聯設定

date = models.datefield()#可以設定更多字段

作 者:郭楷豐

出 處:

一下。您的鼓勵是博主的最大動力!

自 勉:生活,需要追求;夢想,需要堅持;生命,需要珍惜;但人生的路上,更需要堅強。帶著感恩的心啟程,學會愛,愛父母,愛自己,愛朋友,愛他人。

django資料庫之建表

首先了解幾個知識 什麼是一對多,多對多,一對一 什麼是關聯查詢 什麼是主表,什麼是從表 外來鍵放的位置 正向查詢,反向查詢 各種設計模式下,怎麼查詢 一對多 班級表和學生表 乙個班級可以有多個學生,乙個學生屬於那個班級 一對一 學生表和學生資訊表 每個學生對應各自的學生資訊 多對多 學生表和課程表 ...

資料庫建表

資料庫設計三大正規化 為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一...

資料庫建表

use 選擇現有資料庫。master為系統預設資料庫 use master goif exists select from sys.databases where name student drop database student gocreate database student gouse s...