1. 程式人生 > >django-13.操作數據庫(增刪改查)

django-13.操作數據庫(增刪改查)

local 通過 數據庫增刪改查 來源 spa req 訪問 obj mode

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

新增數據

接著前面數據庫User表創建成功後,如果我們在頁面上註冊用戶的話,就需要在User表新增一條數據
比如,我們想在User表插入一組數據 user_name=yoyo5, psw=555555

在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訪問地址

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

# 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訪問地址

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,就會看到頁面顯示:查詢結果:[email protected]

關於查詢

  • 通過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-13.操作數據庫(增刪改查)