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