Django開發基礎--操作數據庫


Django中對數據庫的操作是由Models來完成的

Models是什么?

通常,一個Model對應數據庫的一張數據表

Django中Models以的形式出現

它包含了一些基本字段以及數據的一些行為

所以,在Django中所有對數據庫的操作,就是對Models中的類以及類的對象的操作,不需要寫任何SQL語句來和數據庫進行直接的交互。

編寫Models步驟:

1、在應用根目錄下創建models.py,並引入models模塊

2、創建類,繼承models.Model,該類即是一張數據表

3、在類中創建字段

字段創建:

1、數據表里的字段其實就是models.py中類的屬性(變量)

例如:    name = models.CharField(max_length=100) # 發布會標題

Django中主要的數據類型:

編寫完Models,怎么把類同步到數據庫,生成數據表呢?

1、命令行中進入manage.py的同級目錄

2、執行 python3 manage.py makemigrations app名(sign)(可選,如果不指定應用名,默認是該項目下的所有應用)

3、再執行 python3 manage.py migrate,完成數據遷移

完成數據遷移后,Django會自動在sign/migrations目錄下生成移植文件

執行python3 manage.py sqlmigrate 應用名 文件id(0001) 查看SQL語句.

一、使用MySQL數據庫:

Django 默認使用自帶的sqlite3數據庫,對各種數據庫提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

Django 為這些數據庫提供了統一的調用API。 我們可以根據自己業務需求選擇不同的數據庫。

MySQL 是 Web 應用中最常用的數據庫

使用MySQL數據庫步驟

1、如果使用的 Python2.x 版本,那么連接 MySQL 數據庫可以使用 MySQL-python。 但是,MySQL-python 只支持 Python2.x 版本,並在 2014 年 1 月之后就不再更新了,但這並不影響對該庫的使 用。目前 Django 默認使用的是該驅動。如果使用的是 Python3.x 版本的 Django,所以這里推薦使用 PyMySQL 驅動。

命令:python3 -m pip install PyMySQL

因為 Django 在連接 MySQL 數據庫時默認使用的是 MySQLdb 驅動,我們現在安裝的是 PyMySQL 驅動,如何讓 Django 通過 PyMySQL 來 連接 MySQL 數據庫呢?在.../guest/__init__.py 目錄下添加:

import pymysql

pymysql.install_as_MySQLdb()

2、setting.py文件中配置MySQL數據庫

注意:切換了數據庫后,之前 Sqlite3 數據庫里的數據並不能復制到 MySQL 中,所以需要重新進行數據庫同步,使數據模型重新在 MySQL 數據庫中生成表。

執行 python3 manage.py migrate

二、視圖層Views進行數據庫的增、刪、改、查

在原項目中再新建一個應用contral,記得在settings中添加此應用

1、創建model表

2、 生成相應的表
python manage.py makemigrations
python manage.py migrate 
3、admin后台注冊表

並添加數據

數據進行增刪改查的代碼:
UserInfo.objects.all()
UserInfo.objects.all().values('user')        #只取user列
UserInfo.objects.get(id=1)      #取出id為1的數據
UserInfo.objects.all().values_list('id','user')    #取出id和user列,並生成一個列表
UserInfo.objects.get(user='Jia')  
查找數據
4、配置url

5、編寫views

6.html代碼

7、成功獲取數據

增加數據

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)

刪除數據

改數據

UserInfo.objects.filter(user='Jia').update(pwd='520')
或者
obj = UserInfo.objects.get(user='Jia')
obj.pwd = '520'
obj.save()


免責聲明!

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



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