django中 對Mysql數據庫的建表


Django操作Mysql數據庫:

1.1 在settings中,配置數據庫相關參數,所以無需修改,這里我們看一下:

   DATABASES = {
   'default': {
   # 這里可以指定使用的數據庫類型,例如mysql
   'ENGINE': 'django.db.backends.mysql',
   'NAME': 'djangomysql',
   'USER':'root',
   'PASSWORD':'******',
   'HOST':'localhost',
   'PORT':'3306',
  'OPTIONS': {'isolation_level': None}
  }
  }

 

 

1.2 編譯models.py Django通過自定義python類的形式來定義具體的模型,每個模型的物理存在方式就是一個python的Class,每個模型代表數據庫中的一張表,

每個類的實例代表數據庫中的一行數據,類中的每個變量代表數據庫中的一列字段。Django通過模型,將python代碼和數據庫操作結合起來,實現對SQL查詢語言的封裝。

也就是說,你可以不會管理數據庫,可以不會SQL語言,你同樣能通過python的代碼進行數據庫的操作。DJango通過ORM對數據庫進行操作,下面直接看代碼:

from django.db import models
# Create your models here.
class UserInfo(models.Model):
'''
創建兩個字段,最大長度是32,類型是char
'''
user = models.CharField(max_length= 32)
pwd = models.CharField(max_length= 32)
# 這里我們創建了兩個字段,分別保存用戶的名稱和密碼。
# 上面的代碼,相當於下面的原生SQL語句。
CREATE TABLE UserInfo (
"id" serial NOT NULL PRIMARY KEY,
"user" varchar(30) NOT NULL,
"pwd" varchar(30) NOT NULL
);

 

注意:
Django默認自動創建自增主鍵ID,當然也可以自己指定主鍵。 上面的SQL語法基於PostgreSQL更多字段和參數.每個字段有一些特有的參數,

例如,CharField 需要 max_length 參數來指定VARCHAR 數據庫字段的大小。還有一些適用於所有字段的通用參數。這些參數在文檔中有詳細定義,

這里我們學習一下最常用的:
<1> CharField
字符串字段, 用於較短的字符串.CharField 要求必須有一個參數 maxlength, 用於從數據庫層和Django校驗層限制該字段所允許的最大字符數.


<2> IntegerField
用於保存一個整數.


<3> FloatField
一個浮點數. 必須 提供兩個參數:

參數 描述
max_digits 總位數(不包括小數點和符號)
decimal_places 小數位數
舉例來說, 要保存最大值為 999 (小數點后保存2位),你要這樣定義字段:
models.FloatField(..., max_digits=5, decimal_places=2)
要保存最大值一百萬(小數點后保存10位)的話,你要這樣定義:
models.FloatField(..., max_digits=19, decimal_places=10)
admin 用一個文本框(<input type="text">)表示該字段保存的數據.


<4> AutoField
一個 IntegerField, 添加記錄時它會自動增長. 你通常不需要直接使用這個字段;
自定義一個主鍵:my_id=models.AutoField(primary_key=True)
如果你不指定主鍵的話,系統會自動添加一個主鍵字段到你的 model.


<5> BooleanField
A true/false field. admin 用 checkbox 來表示此類字段.


<6> TextField
一個容量很大的文本字段.
admin 用一個 <textarea> (文本區域)表示該字段數據.(一個多行編輯框).


<7> EmailField
一個帶有檢查Email合法性的 CharField,不接受 maxlength 參數.


<8> DateField
一個日期字段. 共有下列額外的可選參數:
Argument 描述
auto_now 當對象被保存時,自動將該字段的值設置為當前時間.通常用於表示 "last-modified" 時間戳.
auto_now_add 當對象首次被創建時,自動將該字段的值設置為當前時間.
通常用於表示對象創建時間.(僅僅在admin中有意義...)


<9> DateTimeField
一個日期時間字段. 類似 DateField 支持同樣的附加選項.


更多參數
(1)null
如果為True,Django 將用NULL 來在數據庫中存儲空值。 默認值是 False.


(1)blank
如果為True,該字段允許不填。默認為False。
要注意,這與 null 不同。null純粹是數據庫范疇的,而 blank 是數據驗證范疇的。
如果一個字段的blank=True,表單的驗證將允許該字段是空值。如果字段的blank=False,該字段就是必填的。


(2)default
字段的默認值。可以是一個值或者可調用對象。如果可調用 ,每有新對象被創建它都會被調用。


(3)primary_key
如果為True,那么這個字段就是模型的主鍵。如果你沒有指定任何一個字段的primary_key=True,
Django 就會自動添加一個IntegerField字段做為主鍵,所以除非你想覆蓋默認的主鍵行為,
否則沒必要設置任何一個字段的primary_key=True。


(4)unique
如果該值設置為 True, 這個數據字段的值在整張表中必須是唯一的


(5)choices
由二元組組成的一個可迭代對象(例如,列表或元組),用來給字段提供選擇項。如果設置了choices ,默認的表單將是一個選擇框而不是標准的文本框,而且這個選擇框的選項就是choices 中的選項。

 

在終端創建表 我們需要在pycharm的teminal中通過命令創建數據庫的表,有兩條命令,分別是:
生成同步數據庫的腳本代碼

python manage.py makemigrations

通過運行makemigrations 命令,相當於告訴Django,你對模型有改動,並且你想把這些改動保存為一個“遷移”(migration)。
migrations是Django保存模型修改記錄的文件,這些文件保存在磁盤上,我們可以打開這個文件看一下,里面保存的都是可讀並且可編譯的內容,方便我們隨時手動修改。

然后同步數據庫:

python manage.py migrate

  

如果你修改了數據庫model:

刪除app項目中的migrations中的文件

重復上面兩步

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM