python之Django框架的ORM簡介

2021-09-17 18:31:07 字數 4203 閱讀 4099

databases = 

}

2.在與django 專案同名的目錄下的__init__.py 檔案中寫下如下**,告訴django 使用pymysql模組連線mysql資料庫:

import pymysql

pymysql.install_as_mysqldb()

3.資料庫遷移的時候出現乙個警告

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引數

『options』: ,
(二).model

在django中model是你資料的單

一、明確的資訊**。它包含了你儲存的資料的重要欄位和行為。通常,乙個模型(model)

對映到乙個資料庫表。

基本情況:

每個模型都是乙個python類,它是django.db.models.model的子類,

模型的每個屬性都代表乙個資料庫欄位.

django為您提供了乙個自動生成的資料庫訪問api

(三).快速入門

下面這個例子定義了乙個 person 模型,包含 first_name 和 last_name。

from django.db import models

class person(models.model):

first_name = models.charfield(max_length=30)

last_name = models.charfield(max_length=30)

first_name 和 last_name 是模型的字段。每個欄位被指定為乙個類屬性,每個屬性對映到乙個資料庫列.

上面的 person 模型將會像這樣建立乙個資料庫表.

「id」 serial not null primary key,

「first_name」 varchar(30) not null,

「last_name」 varchar(30) not null

);

class userinfo(models.model):

nid = models.autofield(primary_key=true)

username = models.charfield(max_length=32)

class meta:

db_table = 「table_name」

2.id欄位是自動新增的,如果你想要指定自定義主鍵,只需在其中乙個欄位中指定 primary_key=true 即可。如果django發現你已

經明確地設定了field.primary_key,它將不會新增自動id列。

(四).欄位

1.autofield

自增的整形字段,必填引數primary_key=true,則成為資料庫的主鍵。無該字段時,django自動建立。

注意:乙個model不能有兩個autofield欄位。

2.integerfield

乙個整數型別,數值的範圍是-2147483648 - 2147483647.

3.charfield

字元型別,必須提供max_length引數.max_length表示字元的長度.

4.datefield

日期型別,日期格式為yyyy-mm-dd,相當於python中的datetime.date的例項

引數:auto_now:每次修改時修改為當前日期時間

auto_now_add:新建立物件時自動新增當前日期時間。

auto_now和auto_now_add和default引數是互斥的,不能同時設定。

5.datetimefield

日期時間字段,格式為yyyy-mm-dd hh:mm[:ss[.uuuuuu]][tz],相當於python中的datetime.datetime的例項。

6.smallintegerfield(integerfield):

小整數 -32768 ~ 32767

7.positivesmallintegerfield(positiveintegerreldbtypemixin, integerfield)

protocol,用於指定ipv4或ipv6, 『both』,「ipv4」,「ipv6」

unpack_ipv4, 如果指定為true,則輸入::ffff:192.0.2.1時候,可解析為192.0.2.1,開啟此功能,需要protocol=「both」

16.urlfield(charfield)

imagefield(filefield)

floatfield(field)

binaryfield(field)

def db_type(self, connection):

限定生成資料庫表的字段型別為char,長度為max_length指定的值

return 'char(%s)' % self.max_length

使用自定義char型別字段

class class(models.model):

id = models.autofield(primary_key=true)

title = models.charfield(max_length=25)

# 使用自定義的char型別的字段

cname = mycharfield(max_length=25)

(六).欄位引數

null 資料庫中欄位是否可以為空

db_column 資料庫中字段的列名

default 資料庫中字段的預設值

primary_key 資料庫中欄位是否為主鍵

db_index 資料庫中欄位是否可以建立索引

unique 資料庫中欄位是否可以建立唯一索引

unique_for_date 資料庫中欄位【日期】部分是否可以建立唯一索引

unique_for_month 資料庫中欄位【月】部分是否可以建立唯一索引

unique_for_year 資料庫中欄位【年】部分是否可以建立唯一索引

verbose_name        admin中顯示的欄位名稱

blank admin中是否允許使用者輸入為空

editable admin中是否可以編輯

help_text admin中該字段的提示資訊

choices admin中顯示選擇框的內容,用不變動的資料放在記憶體中從而避免跨表

如:gf = models.integerfield(choices=[(0, '何穗'),(1, '大表姐'),],default=1)

error_messages 自定義錯誤資訊(字典型別),從而定製想要顯示的錯誤資訊;

(七).model meta引數

class userinfo(models.model):

nid = models.autofield(primary_key=true)

username = models.charfield(max_length=32)

class meta:

db_table = "table_name"

# admin中顯示的表名稱

verbose_name = '個人資訊'

# verbose_name加s

verbose_name_plural = '所有使用者資訊'

# 聯合索引

index_together = [

("pub_date", "deadline"), # 應為兩個存在的字段

]# 聯合唯一索引

unique_together = (("driver", "restaurant"),) # 應為兩個存在的字段

python框架之Django專案建立

目錄 1.django專案建立命令 2.django專案setting設定 1 類名設定 2 資料庫模組設定 3 其他設定 3.django資料庫連線 4.django專案利用model模組直接建立資料表 5.django專案執行命令 建立虛擬環境,切換到虛擬環境,執行以下命令 django adm...

django框架之安裝

我們安裝的是django 1.11.14 版本 我們先用pycham先裝 files選單欄下選擇setting,然後再找project下的直譯器project interpreter,然後點選右邊的加號按鈕,在搜尋框中搜尋django,選擇版本,雙擊安裝。看圖 然後再介紹用pip安裝 開啟cmd,在...

python之Django框架篇 基礎一複習

0.django安裝 pip3 install django 1.11.11 pip3 install i django 1.11.11 pycharm安裝的時候 注意不要勾選那個選項 你們懂得 1.django專案的啟動 1.命令列啟動 在專案的根目錄下 也就是有manage.py的那個目錄 執行...