python測試開發django-13.操做數據庫(增刪改查)

前言

django的models模塊裏面能夠新增一張表和字段,一般頁面上的數據操做都來源於數據庫的增刪改查,django如何對msyql數據庫增刪改查操做呢?
本篇詳細講解django操做mysql數據庫mysql

新增數據

接着前面數據庫User表建立成功後,若是咱們在頁面上註冊用戶的話,就須要在User表新增一條數據
好比,咱們想在User表插入一組數據 user_name=yoyo5, psw=555555sql

在urls.py同一目錄(helloworld/helloworld/testdb.py)新建一個testdb.py腳本數據庫

# helloworld/helloworld/testdb.py

from django.http import HttpResponse
from hello.models import User


# 新增數據
def add_user(request):
    test1 = User(user_name='yoyo5', 
                       psw="55555")
    test1.save()
    return HttpResponse("yoyo5用戶建立成功!看去看看吧")

urls.py新增url訪問地址django

from django.conf.urls import url
from django.urls import re_path, path
from hello import views
from . import  testdb

urlpatterns = [
    # 新增用戶
    url(r'^register$', testdb.add_user),

]

瀏覽器輸入http://localhost:8000/register,就會看到頁面顯示:yoyo5用戶建立成功!看去看看吧
查詢數據庫,會發現hello_user表新增了一個yoyo5的數據瀏覽器

更新數據

若是須要修改數據庫的某個數據,好比我想把yoyo5用戶的psw改爲999999函數

在urls.py同一目錄(helloworld/helloworld/testdb.py)的testdb.py腳本,繼續寫個update_psw函數url

# helloworld/helloworld/testdb.py

from django.http import HttpResponse
from hello.models import User

# 更新數據
def update_psw(request):
    # 修改其中一個user_name='yoyo5'的字段,再save,至關於SQL中的UPDATE
    test2 = User.objects.get(user_name='yoyo5')
    test2.psw = '999999'
    test2.save()

    # 另一種方式
    # Test.objects.filter(id=1).update(name='Google')

    # 修改全部的列
    # Test.objects.all().update(name='Google')
    return HttpResponse("<p>密碼修改爲功</p>")

urls.py新增url訪問地址code

from django.conf.urls import url
from django.urls import re_path, path
from . import testdb

urlpatterns = [
    # 新增用戶
    url(r'^register$', testdb.add_user),
    url(r'^update$', testdb.update_psw),

]

瀏覽器輸入http://localhost:8000/update,就會看到頁面顯示:密碼修改爲功
查詢數據庫,會發現hello_user表yoyo5的psw對應的值修改了對象

刪除數據

若是user表裏面的某個用戶數據不想要了,也能夠刪除數據排序

# 刪除數據
def delete_user(request):
    # 刪除user_name=yoyo1的數據
    test3 = User.objects.get(user_name='yoyo1')
    test3.delete()

    # 另一種方式
    # Test.objects.filter(id=1).delete()

    # 刪除全部數據
    # Test.objects.all().delete()

    return HttpResponse("<p>刪除成功</p>")

urls.py新增url訪問地址

from django.conf.urls import url
from django.urls import re_path, path
from . import testdb

urlpatterns = [
    # 新增用戶
    url(r'^register$', testdb.add_user),
    url(r'^update$', testdb.update_psw),
    url(r'^delete$', testdb.delete_user),
]

瀏覽器輸入http://localhost:8000/delete,就會看到頁面顯示:刪除成功
查詢數據庫,會發現hello_user表yoyo1對應的數據清除了
備註:要是表裏面沒這個數據,會報錯:User matching query does not exist.

查詢數據

好比我要查詢user表裏面yoyo用戶對應的mail的值
在urls.py同一目錄(helloworld/helloworld/testdb.py)的testdb.py腳本,繼續寫個update_psw函數

# 查詢數據
def select_mail(request):

    # 方法1 能夠查詢單個結果直接獲取mail值
    m = User.objects.get(user_name='yoyo').mail

    # 方法2 filter至關於SQL中的WHERE,可設置條件過濾結果
    # test4 = User.objects.filter(user_name='yoyo')
    
    # 查詢結果是list,取下標後,獲取mail字段的值
    # m = test4[0].mail

    return HttpResponse("<p>查詢結果:%s</p>" % m)

urls.py新增url訪問地址

from django.conf.urls import url
from django.urls import re_path, path
from . import testdb

urlpatterns = [
    # 新增用戶
    url(r'^register$', testdb.add_user),
    url(r'^update$', testdb.update_psw),
    url(r'^delete$', testdb.delete_user),
    url(r'^mail$', testdb.select_mail),
]

瀏覽器輸入http://localhost:8000/mail,就會看到頁面顯示:查詢結果:283340479@qq.com

關於查詢

  • 經過objects這個模型管理器的all()得到全部數據行,至關於SQL中的SELECT * FROM
    a = User.objects.all()

  • filter至關於SQL中的WHERE,可設置條件過濾結果
    b = User.objects.filter(id=1)

  • 獲取單個對象
    c = User.objects.get(id=1)

  • 限制返回的數據 至關於 SQL 中的 OFFSET 0 LIMIT 2;
    d = User.objects.order_by('name')[0:2]

  • 查詢結果排序
    e = User.objects.order_by("id")

  • 上面的方法能夠連着使用
    f = User.objects.filter(name="runoob").order_by("id")

django交流QQ羣:779429633

相關文章
相關標籤/搜索