python/Django(增、刪、改、查)操作
我們要通過pycharm中的Django模塊連接MySQL數據庫進行對數據的操作。
一、創建Django項目(每創建一個項目都要進行以下設置)
1、如圖所示,創建一個Project
2、紅色區域是創建的項目名稱,藍色區域是創建目錄
3、如上圖,把設置中這個注釋掉
4、在設置文件中設置HTML文件夾路徑
5、設置完文件夾路徑,創建一個文件夾
二、連接數據庫進行操作
建議:創建一個文件夾存放python代碼,最后導入到urls.py文件中,如圖:
在urls.py文件中設置url和相應的函數:
1 urlpatterns = [ 2 # url(r'^admin/', admin.site.urls), 3 url(r'^classes/', stter.classes), 4 url(r'^add_class/', stter.add_class), 5 url(r'^del_class/', stter.del_class), 6 url(r'^update_class/', stter.update_class), 7 ]
查看數據庫class表的內容:
from django.shortcuts import render,redirect ##導入django模塊下的返回方式和跳轉模塊 import pymysql ##導入pymysql模塊 def classes(request): ##定義查看數據庫函數 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) cursor.execute('select * from class') class_list = cursor.fetchall() cursor.close() conn.close() return render(request,'classes.html',{'class_list':class_list}) 返回給用戶(經過classes.html和用戶瀏覽器渲染內容){class_list}是傳值到html中使用 ------------------------------------------------------------------------ "D:\pycharm\PyCharm 2017.1\bin\runnerw.exe" D:\python3.6\python.exe E:/s4day65/manage.py runserver 8001 Performing system checks... System check identified no issues (0 silenced). You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. June 15, 2017 - 17:08:15 Django version 1.11.2, using settings 's4day65.settings' Starting development server at http://127.0.0.1:8001/ Quit the server with CTRL-BREAK. ===============運行正常================
查看HTML代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <h1>班級列表</h1> 9 <div> 10 <a href="/add_class/">添加</a> 11 </div> 12 <table> 13 <thead> 14 <tr> 15 <th>ID</th> 16 <th>班級名稱</th> 17 <th>操作</th> 18 </tr> 19 </thead> 20 21 {% for row in class_list%} for 循環 22 <tr> 23 <td>{{ row.cid }}</td> 24 <td>{{ row.cname }}</td> 25 <td> 26 <a href="/update_class/?nid={{ row.cid }}">編輯</a> 27 | 28 <a href="/del_class/?nid={{ row.cid }}">刪除</a> 29 </td> 30 </tr> 31 {% endfor %} 結束for循環 (開始結束一定要共存) 32 </table> 33 </body> 34 </html>
運行效果:
添加:
1 def add_class(request): ##定義添加數據庫函數 2 if request.method == 'GET': 3 return render(request,'add_class.html') 4 else: 5 print(request.POST) 6 v=request.POST.get('cname') 7 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8') 8 cursor = conn.cursor() 9 cursor.execute("insert into class(cname) VALUES(%s)",[v,]) 10 conn.commit() 11 cursor.close() 12 conn.close() 13 return redirect('/classes/') 14 --------------------------------------------------------------- 15 Performing system checks... 16 17 System check identified no issues (0 silenced). 18 19 You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. 20 Run 'python manage.py migrate' to apply them. 21 June 15, 2017 - 17:08:15 22 Django version 1.11.2, using settings 's4day65.settings' 23 Starting development server at http://127.0.0.1:8001/ 24 Quit the server with CTRL-BREAK. 25 [15/Jun/2017 17:10:00] "GET /classes/ HTTP/1.1" 200 1396 26 ===============================
添加的HTML代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <h1>添加班級</h1> 9 <form method="POST" action="/add_class/"> 10 <p>班級名稱:<input type="text" name="cname"></p> 11 <input type="submit" value="提交"> 12 </form> 13 </body> 14 </html>
運行結果:
刪除:
1 def del_class(request): ##定義刪除數據庫函數 2 nid=request.GET.get('nid') 3 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8') 4 cursor = conn.cursor() 5 cursor.execute("delete from class WHERE cid=%s",[nid,]) 6 conn.commit() 7 cursor.close() 8 conn.close() 9 return redirect('/classes/')
運行結果:
修改:
1 def update_class(request): 2 if request.method =='GET': 3 nid = request.GET.get('nid') 4 # name=request.POST.get('cname') 5 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8') 6 cursor = conn.cursor() 7 cursor.execute("select class.cid,class.cname from class where cid=%s", [nid,]) 8 ste = cursor.fetchone() 9 return render(request, 'update_class.html', {'ste': ste}) 10 else: 11 id=request.GET.get('nid') 12 name=request.POST.get('cname') 13 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8') 14 cursor = conn.cursor() 15 cursor.execute("update class set cname=%s where cid = %s",[name,id,]) 16 conn.commit() 17 cursor.close() 18 conn.close() 19 return redirect('/classes/')
修改HTML代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>班級修改</h1> <form method="POST" action="/update_class/?nid={{ ste.0 }}"> <p>班級名稱:<input type="text" name="cname" value="{{ ste.1 }}"></p> <input type="submit" value="提交"> {# </form>#} {# {% for row in ste %}#} {# <a>{{ row }}</a>#} {# {% endfor %}#} </form> </body> </html>
運行效果: