武漢工程信息網(wǎng)seo入門(mén)教程視頻
Django學(xué)習(xí)記錄:使用ORM操作MySQL數(shù)據(jù)庫(kù)并完成數(shù)據(jù)的增刪改查
數(shù)據(jù)庫(kù)操作
MySQL數(shù)據(jù)庫(kù)+pymysql
Django開(kāi)發(fā)操作數(shù)據(jù)庫(kù)更簡(jiǎn)單,內(nèi)部提供了ORM框架。
安裝第三方模塊
pip install mysqlclient
ORM可以做的事:
1、創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)中的表(不用寫(xiě)SQL語(yǔ)句)。【無(wú)法創(chuàng)建數(shù)據(jù)庫(kù)】
2、操作表中的數(shù)據(jù)(不用寫(xiě)SQL語(yǔ)句)。
1、自己創(chuàng)建數(shù)據(jù)庫(kù)
1)啟動(dòng)MySQL服務(wù)
2)自帶工具創(chuàng)建數(shù)據(jù)庫(kù)
2、django連接數(shù)據(jù)庫(kù)
在setting.py文件中進(jìn)行配置和修改:此處連接的是本機(jī)的mysql數(shù)據(jù)庫(kù)
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'dbname', # 數(shù)據(jù)庫(kù)名字'USER': 'root','PASSWORD': 'xxxxxx','HOST': 'localhost','PORT': 3306,}
}
3、django操作表
-
創(chuàng)建表
-
刪除表
-
修改表
創(chuàng)建表:在models.py文件中:
class UserInfo(models.Model):name = models.CharField(max_length=32) # charfield 字符串類(lèi)型password = models.CharField(max_length=64)age = models.IntegerField() # IntegerField 整數(shù)類(lèi)型
相當(dāng)于在MySQL中運(yùn)行了
create table app01_userinfo(id bigint auto_increment primary key,name varchar(32),password varchar(64),age int
);
然后,在terminal中依次執(zhí)行命令:(注意:app需要提前注冊(cè)。)
python manage.py makemigrations
python manage.py migrate
即可在mysql中創(chuàng)建好app01_userinfo這個(gè)文件
*在表中新增列時(shí),由于已存在列中可能已有數(shù)據(jù),所以新增列必須要指定新增列對(duì)應(yīng)的數(shù)據(jù):
-
手動(dòng)輸入一個(gè)值
-
設(shè)置默認(rèn)值
size = models.IntegerField(default=2)
-
允許為空
data = models.IntegerField(null=True, blank=True)
在開(kāi)發(fā)中如果想要對(duì)表結(jié)構(gòu)進(jìn)行調(diào)整:
-
在models.py文件中操作類(lèi)即可。
-
在terminal執(zhí)行命令
python manage.py makemigrations python manage.py migrate
數(shù)據(jù)的增刪改查
from app01 import models
1、新建
# ###新建###models.Department.objects.create(title="銷(xiāo)售部")models.Department.objects.create(title="IT部")models.Department.objects.create(title="運(yùn)營(yíng)部")models.UserInfo.objects.create(name="dumpling", password="123", age="22")models.UserInfo.objects.create(name="noodles", password="111", age="20")
2、刪除
# ###刪除###models.UserInfo.objects.filter(id=3).delete()models.Department.objects.all().delete()
3、查看(獲取數(shù)據(jù))
###獲取數(shù)據(jù)####獲取的是列表,列表是一行一行的數(shù)據(jù)#data_list = [行(對(duì)象) 行 行] QuerySet類(lèi)型data_list = models.UserInfo.objects.all()for obj in data_list:print(obj.id, obj.name, obj.password, obj.age)# 尋找id=1的數(shù)據(jù)。data_list = [對(duì)象,],這個(gè)方法取到的還是QuerySet類(lèi)型data_list = models.UserInfo.objects.filter(id=1)# 取對(duì)象中的第一個(gè),這個(gè)方法就能直接將第一行對(duì)象取出來(lái)row_obj = models.UserInfo.objects.filter(id=1).first()print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)
4、更新
models.UserInfo.objects.all().update(password=999)models.UserInfo.objects.filter(id=2).update(age=999)