Django裡面,管理資料庫和sqlarchemy類似,也是透過orm框架來實現的。所有的資料庫的建立,都是在model.py裡面透過類來實現的。
首先看看如何建立一個單表:
a. 先定義一個類,繼承models.Model, 然後根據需求定義引數,這些引數的型別和變數後面會進一步闡述
models.py
from django.db import modelsclass UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=64)
b. 註冊app
settings.py
INSTALLED_APPS = [‘django.contrib.admin‘,‘django.contrib.auth‘,‘django.contrib.contenttypes‘,‘django.contrib.sessions‘,‘django.contrib.messages‘,‘django.contrib.staticfiles‘,‘app01‘,]
c.執行命令。 第一條命令會生成一個初始化檔案,第二個命令會生成對應的表
python manage.py makemigrationspython manage.py migrate
這樣,就在PyCharm自帶的sqlite資料庫裡面成功的生成了一個app01_UserInfo的表。這個表預設會有一個自增的id作為主鍵,另外兩個欄位是我們透過類建立的。
d. 如果希望使用mysql,因為Django預設使用了MySqldb模組,這個在3.0版本里面不存在,會直接報錯。我們需要改為pymysql的模組,方法如下:
在project同名資料夾下的__init__檔案中新增如下程式碼即可:
import pymysql
pymysql.install_as_MySQLdb()
2. 對於單表的增刪改查詢
查詢
獲取所有結果,獲取到的結果是一個QuerySet的類似列表的物件,每一個元素本身又是一個物件,包括了id,name,password等屬性。
obj = models.UserInfo.objects.all()
<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>
可以透過filter進行過濾,相當於sql的where語句,因為結果也是QuerySet,因此需要再使用first()獲取第一個值
obj = models.UserInfo.objects.filter(id=nid).first()
增加
models.UserInfo.objects.create(username=u,password=p,user_group_id=3)
models.UserInfo.objects.filter(id=nid).delete()
修改,有兩種常見方式
第一個方式
models.UserInfo.objects.filter(id=nid).update(username=u,password=p)
第二個方式
obj=models.UserInfo.objects.filter(id=nid)obj.username=uobj.save()
Django裡面,管理資料庫和sqlarchemy類似,也是透過orm框架來實現的。所有的資料庫的建立,都是在model.py裡面透過類來實現的。
首先看看如何建立一個單表:
a. 先定義一個類,繼承models.Model, 然後根據需求定義引數,這些引數的型別和變數後面會進一步闡述
models.py
from django.db import modelsclass UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=64)
b. 註冊app
settings.py
INSTALLED_APPS = [‘django.contrib.admin‘,‘django.contrib.auth‘,‘django.contrib.contenttypes‘,‘django.contrib.sessions‘,‘django.contrib.messages‘,‘django.contrib.staticfiles‘,‘app01‘,]
c.執行命令。 第一條命令會生成一個初始化檔案,第二個命令會生成對應的表
python manage.py makemigrationspython manage.py migrate
這樣,就在PyCharm自帶的sqlite資料庫裡面成功的生成了一個app01_UserInfo的表。這個表預設會有一個自增的id作為主鍵,另外兩個欄位是我們透過類建立的。
d. 如果希望使用mysql,因為Django預設使用了MySqldb模組,這個在3.0版本里面不存在,會直接報錯。我們需要改為pymysql的模組,方法如下:
在project同名資料夾下的__init__檔案中新增如下程式碼即可:
import pymysql
pymysql.install_as_MySQLdb()
2. 對於單表的增刪改查詢
查詢
獲取所有結果,獲取到的結果是一個QuerySet的類似列表的物件,每一個元素本身又是一個物件,包括了id,name,password等屬性。
obj = models.UserInfo.objects.all()
<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>
可以透過filter進行過濾,相當於sql的where語句,因為結果也是QuerySet,因此需要再使用first()獲取第一個值
obj = models.UserInfo.objects.filter(id=nid).first()
增加
models.UserInfo.objects.create(username=u,password=p,user_group_id=3)
models.UserInfo.objects.filter(id=nid).delete()
修改,有兩種常見方式
第一個方式
models.UserInfo.objects.filter(id=nid).update(username=u,password=p)
第二個方式
obj=models.UserInfo.objects.filter(id=nid)obj.username=uobj.save()