Django關係型資料庫及遷移

2021-10-24 23:14:05 字數 2182 閱讀 9144

1.在指定資料庫中建立資料庫如mysql中

create database 名字 charset utf8
databases =

'default'

:}

在models.py中操作

from django.db import models

# create your models here.

class

userinfo

(models.model)

:'''

當前的類是模型類,記錄的是將來的使用者的基本資訊

'''username = models.charfield(max_length=20)

gender = models.booleanfield(

)def

__str__

(self)

:'''將模型的例項物件以字串的形式輸出'''

return self.username

注意點:

1、建立的模型需要繼承於models.model

2、建立的模型需要進行和資料庫的字段以及型別一一對應

3、id欄位預設是主鍵並且自增,不需要手動寫

4、charfield需要校驗max_length 所以必須寫

python manage.py makemigrations
這裡有些時候會報錯,遷移不了.報mysqldb的錯

解決方法::

在專案同名資料夾下新增驅動檔案

在__init__.py檔案下

import pymysql

pymysql.install_as_mysqldb(

)

python manage.py migrate

##### 1.在model中新增模型類,注意繼承於models.model

##### 2.按照將來在資料庫中的字段以及型別,在模型類中進行定義

##### 3.涉及新建或者修改或者刪除的操作,必須先生成遷移檔案 python manage.py makemigrations

##### 4.執行遷移檔案,將專案中的資料對映到資料庫中

在admin.py中操作

from users.models import userinfo

# register your models here.

admin.site.register(userinfo)

# userinfo是模型名

python manage.py createsuperuser
關於裡面一些欄位的型別和約束

autofield

自增長的integerfield,一般情況下不需要指定。自動建立

0integerfield

整數smallintegerfield

小整數charfield

字串,需要只當max_length

datefield

yyyy-mm-dd 指定的年月日

decimalfield

十進位制浮點數,max_digits表示的是總的位數 decimal_places表示的是小數字數

datetimefield

timefield

boolleanfield

注意點:

1、auto_now 表示每次儲存當前物件到時候,自動設定該字段的時間為當前時間,用於『最後一次修改的時間戳』

2、auto_now_add 表示的是當物件第一次被建立的時候自動設定當前的時間

3、auto_now和auto_now_add是相互排斥的

約束

max_length

最大字元數

primary_key

主鍵null

如果是true,說明這個欄位是允許為空的,資料庫層面

blank

如果是true,說明這個字段允許為空白,表單驗證

unique

這字段在表中的資料是唯一

db_index

在表中為當前的字段設定索引

db_column

欄位的名稱,如果沒有指定則使用屬性值

關係型資料庫 非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

關係型資料庫 非關係型資料庫

2019 02 25 20 38 36 關係型資料庫和非關係型資料的比較 一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表...

關係型資料庫與非關係型資料庫

關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...