您好,登錄后才能下訂單哦!
ORM: 優點: 1.簡單,不用自己SQL語句 2.開發效率高 缺點: 1.記憶你這個特殊的語法 2. 相對于大神的SQL語句,肯定執行效率有差距
ORM的對應關系: 類 ---> 數據表 對象 ---> 數據行 屬性 ---> 字段
ORM能做的事兒: 1.操作數據表 ---> 創建表、刪除表、修改表 2.操作數據行 ---> 數據的增、刪、改、查 注意事項:不能創建數據庫、自己動手創建數據庫
1. 修改django項目中settings.py 中數據庫連接類型:
create database dbs11;
2. 在Django項目中設置連接數據庫的相關配置(告訴Django連接哪一個數據庫)
#數據庫相關配置 DATABASES = { 'default':{ #連接的數據庫類型 'ENGINE':'django.db.backends.mysql', #連接數據庫的地址 'HOST':'127.0.0.1', #數據庫端口 'PORT':3306, #連接數據庫的名稱 'NAME':"dbs11", #連接數據庫的用戶名 'USER':'root', #連接數據庫的密碼 'PASSWORD':'123456' } }
3.告訴Django用pymysql代替默認的MySQLDB 連接MySQL數據庫
在項目目錄中__init__.py文件中導入MySQL連接配置文件
import pymysql #告訴Django用pymysql來代替默認的MySQLdb pymysql.install_as_MySQLdb()
4.在項目如(app)下面的models.py 文件中定義一個類,這個類必須繼承models.Model
from django.db import models #ORM相關的只能寫在這個文件里,寫到別的文件里Django找不到 ##例如: class UserInfo(models,Model): id = models.AutoField(primary_key=True) #創建一個自增的主鍵字段 name = models.CharField(null=False,max_length=16) #創建一個varchar類型的字段不能為空
5.執行兩個命令
python3 manage.py makemigrations python3 manage.py migrate
說明:以上為通過ORM創建數據庫,如果是刪除或者修改只需要在models.py文件中刪除相關字段然后執行第5步的兩個命令即可刪除字段。修改同樣只需要修改models.py文件然后執行第5步的兩個命令即可。
ORM查詢
示例:ORM查詢所有用戶
#orm查詢語法:models.表名.objects.all() #查詢所有 ### ret = models.UserInfo.objects.all() print(ret[0].id,ret[0].name)
在django項目中應用操作:
后端執行方法:
from django.shortcuts import HttpResponse, render, redirect from app import models def user_list(request): #去數據庫中查詢所有的用戶 #利用ORM這個工具去查詢數據庫,不用自己去查詢 ret = models.UserInfo.objects.all() # 打開user_list.html文件, return render(request, "user_list.html", {"user_list": ret})
前端HTML
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用戶列表頁</title> </head> <body> <a href="/add_user/">添加用戶</a> <table border="1"> <thead> <tr> <th>id值</th> <th>用戶名</th> </tr> </thead> <tbody> {% for user in user_list %} <tr> <td>{{ user.id }}</td> <td>{{ user.name }}</td> </tr> {% endfor %} </tbody> </table> </body> </html>
路由urls.py配置:
from app import views #導入項目 urlpatterns = [ url(r'^user_list/',views.user_list) #定義對應路徑關系 ]
ORM添加
#orm添加語法:models.表名.objects.create(name=new_name) #ORM添加
示例:ORM添加用戶
models.UserInfo.objects.create(name=new_name)
路由urls.py配置:
from app import views #導入項目 urlpatterns = [ url(r'^user_list/',views.user_list), #定義對應路徑關系 url(r'^user_add/',views.user_add), ]
后端執行方法:
def user_add(request): if request.method == "POST": #用戶填寫新的用戶名,并發送POST請求 new_name = request.POST.get('username',None) #去數據庫中創建一條用戶記錄 models.UserInfo.objects.create(name=new_name) ##添加成功后返回展示網頁 return redirect("/user_list/") #第一個請求頁面的時候,就返回一個頁面,頁面上有兩個框讓用戶填寫 return render(request,"add_user.html")
前端執行的方法:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>添加用戶</title> </head> <body> <form action="/add_user/" method="post"> <p>用戶名: <input type="text" name="username"> </p> <p> <input type="submit" value="提交"> </p> </form> </body> </html>
ORM與原生SQL查詢
#原生SQL #查詢所有 select * from user; ##ORM語法: models.user.objects.all() ###ORM條件語句查詢 #filter條件(SQL:where) models.user.objects.filter(id=1) #條件大于 ##SQL: SELECT * from user where id>1 and password='123' #ORM gte models.user.objects.filter(id__gt=1,password='123') #條件 like語法 ##ORM models.user.objects.filter(password__startswith='a') #以a開頭 .這里對大小寫敏感,而SQL like不敏感 models.user.objects.fileter(username__icontains='a') #對大寫不敏感的,即a,A都匹配 #SQL in 語句對比ORM語句 select ... where id in(1,2,3,4); models.user.objects.filter(id__in=[1,2,3,4]) ##ORM查詢日期 models.user.objects.filter(register_date_month=5) models.user.objects.filter(register_date_month=5)[0].register_date #對比SQL語句 select ... where extract('month' from pub_date) = '12'; ##ORM批量創建用戶 #有100個創建對象 objs = [models.user(title='name{}'.format(i)) for i in range(100)] models.user.objects.bulk_create(onjs,10) #這里是10個一提交,即每次創建10個用戶
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。