Django开发基础----操作数据库
Django中對(duì)數(shù)據(jù)庫(kù)的操作是由Models來(lái)完成的
Models是什么?
通常,一個(gè)Model對(duì)應(yīng)數(shù)據(jù)庫(kù)的一張數(shù)據(jù)表
Django中Models以類的形式出現(xiàn)
它包含了一些基本字段以及數(shù)據(jù)的一些行為
所以,在Django中所有對(duì)數(shù)據(jù)庫(kù)的操作,就是對(duì)Models中的類以及類的對(duì)象的操作,不需要寫任何SQL語(yǔ)句來(lái)和數(shù)據(jù)庫(kù)進(jìn)行直接的交互。
編寫Models步驟:
1、在應(yīng)用根目錄下創(chuàng)建models.py,并引入models模塊
2、創(chuàng)建類,繼承models.Model,該類即是一張數(shù)據(jù)表
3、在類中創(chuàng)建字段
字段創(chuàng)建:
1、數(shù)據(jù)表里的字段其實(shí)就是models.py中類的屬性(變量)
例如: ? ?name = models.CharField(max_length=100) # 發(fā)布會(huì)標(biāo)題
Django中主要的數(shù)據(jù)類型:
編寫完Models,怎么把類同步到數(shù)據(jù)庫(kù),生成數(shù)據(jù)表呢?
1、命令行中進(jìn)入manage.py的同級(jí)目錄
2、執(zhí)行 python3 manage.py makemigrations app名(sign)(可選,如果不指定應(yīng)用名,默認(rèn)是該項(xiàng)目下的所有應(yīng)用)
3、再執(zhí)行?python3 manage.py migrate,完成數(shù)據(jù)遷移
完成數(shù)據(jù)遷移后,Django會(huì)自動(dòng)在sign/migrations目錄下生成移植文件
執(zhí)行python3 manage.py sqlmigrate 應(yīng)用名 文件id(0001) 查看SQL語(yǔ)句.
一、使用MySQL數(shù)據(jù)庫(kù):
Django 默認(rèn)使用自帶的sqlite3數(shù)據(jù)庫(kù),對(duì)各種數(shù)據(jù)庫(kù)提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。
Django 為這些數(shù)據(jù)庫(kù)提供了統(tǒng)一的調(diào)用API。 我們可以根據(jù)自己業(yè)務(wù)需求選擇不同的數(shù)據(jù)庫(kù)。
MySQL 是 Web 應(yīng)用中最常用的數(shù)據(jù)庫(kù)
使用MySQL數(shù)據(jù)庫(kù)步驟:
1、如果使用的 Python2.x 版本,那么連接 MySQL 數(shù)據(jù)庫(kù)可以使用 MySQL-python。 但是,MySQL-python 只支持 Python2.x 版本,并在 2014 年 1 月之后就不再更新了,但這并不影響對(duì)該庫(kù)的使 用。目前 Django 默認(rèn)使用的是該驅(qū)動(dòng)。如果使用的是 Python3.x 版本的 Django,所以這里推薦使用 PyMySQL 驅(qū)動(dòng)。
命令:python3 -m pip install?PyMySQL
因?yàn)?Django 在連接 MySQL 數(shù)據(jù)庫(kù)時(shí)默認(rèn)使用的是 MySQLdb 驅(qū)動(dòng),我們現(xiàn)在安裝的是 PyMySQL 驅(qū)動(dòng),如何讓 Django 通過 PyMySQL 來(lái) 連接 MySQL 數(shù)據(jù)庫(kù)呢?在.../guest/__init__.py 目錄下添加:
import pymysql
pymysql.install_as_MySQLdb()
2、setting.py文件中配置MySQL數(shù)據(jù)庫(kù)
注意:切換了數(shù)據(jù)庫(kù)后,之前 Sqlite3 數(shù)據(jù)庫(kù)里的數(shù)據(jù)并不能復(fù)制到 MySQL 中,所以需要重新進(jìn)行數(shù)據(jù)庫(kù)同步,使數(shù)據(jù)模型重新在 MySQL 數(shù)據(jù)庫(kù)中生成表。
執(zhí)行?python3 manage.py migrate
二、視圖層Views進(jìn)行數(shù)據(jù)庫(kù)的增、刪、改、查
在原項(xiàng)目中再新建一個(gè)應(yīng)用contral,記得在settings中添加此應(yīng)用
1、創(chuàng)建model表
?
2、生成相應(yīng)的表 python manage.py makemigrations python manage.py migrate? 3、admin后臺(tái)注冊(cè)表并添加數(shù)據(jù)
對(duì)數(shù)據(jù)進(jìn)行增刪改查的代碼:UserInfo.objects.all()
UserInfo.objects.all().values('user')? ? ? ? #只取user列
UserInfo.objects.get(id=1) ? ? ?#取出id為1的數(shù)據(jù) UserInfo.objects.all().values_list('id','user')? ? #取出id和user列,并生成一個(gè)列表 UserInfo.objects.get(user='Jia') ? 查找數(shù)據(jù) 4、配置url
5、編寫views
6.html代碼
7、成功獲取數(shù)據(jù)
增加數(shù)據(jù)
models.UserInfo.objects.create(user='tswn',pwd='12345')或者 obj = models.UserInfo(user='tswn',pwd='12345') obj.save() 或者 dic = {'user':'tswn',pwd='12345')} models.UserInfo.objects.create(**dic)
刪除數(shù)據(jù)
改數(shù)據(jù)
UserInfo.objects.filter(user='Jia').update(pwd='520') 或者 obj =?UserInfo.objects.get(user='Jia') obj.pwd = '520' obj.save()轉(zhuǎn)載于:https://www.cnblogs.com/ailiailan/p/8485215.html
總結(jié)
以上是生活随笔為你收集整理的Django开发基础----操作数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用var声明的变量 和 直接赋值并未声
- 下一篇: 字符流缓冲区的使用之BufferedWr