在網盤上怎么做自己的網站太原網站開發(fā)
Django學習筆記
Django和Mysql數據庫
Django開發(fā)操作數據庫更簡單,內部提供了ORM框架。
1)安裝mysqlclient
pip3 install mysqlclient
2)ORM
ORM可以幫助我們做兩件事:
1.創(chuàng)建、修改、修改數據庫中的表(不用寫sql語句)[不能創(chuàng)建數據庫]
2.操作表中的數據(不用寫sql語句)
3)創(chuàng)建數據庫
create database database_name;
4)配置Django連接數據庫
修改settings.py文件
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', #數據庫類型'NAME': 'helloWorld', #數據庫名稱'USER': 'root', #數據庫用戶名'PASSWORD': 'xxxx', #數據庫密碼'HOST': 'xxx.xxx.xxx.xxx', #數據庫主機地址'PORT': '33060', #數據庫端口號}
}
5)在modeles.py中創(chuàng)建一個用于生成表的類
from django.db import models# Create your models here.
class userInfo(models.Model): #這個類用于生成表name = models.CharField(max_length=32) #定義name字段password = models.CharField(max_length=16) #定義password字段age = models.IntegerField() #定義age字段"""
Django執(zhí)行上面這個類的時候,相當于執(zhí)行了建表操作(新建的表名為“app名_類名”),相當于以下代碼:
create table app1_userinfo(id bigint auto_increment primary key, name varchar(32),password varchar(16),age int)
"""
6)創(chuàng)建表,將數據自帶表遷移到數據庫中
python manage.py makemigrations #生成遷移文件
python manage.py migrate #進行遷移
遷移完后,在數據庫中應該可以看到一些django的表
注意:
如果不執(zhí)行遷移,那么在使用的時候,有些數據需要存到自帶的表中,那么就會報錯。
這樣就可以看到數據庫中已創(chuàng)建好了一張表
如果要刪除表,只需要把models.py中的類刪除,重新執(zhí)行表遷移就可以。
如果要修改表,只需要修改models.py中的類,重新執(zhí)行表遷移就可以。
注意:
在新建 的表中會自動增加一個ID字段,并且為auto_increment 和primary key
如果在表中增加了新字段,進行遷移的時候會有兩個選項:
選項1 :手動指定一個默認值;
選項2:退出,可以在類中將將新增字段添加一個默認值;
如:
six=models.CharField(max_length=4,defalut=l)
或者設置新增字段允許為空
six=models.CharField(max_length=4,null=True,blank=True)
1.13操作數據
1)新增記錄
from app1 import models #引入models模塊
models.<class_name>.objects.create(<field1>=<value>,<field2>=<value>.....)#相當于以下sql語句
#insert into <table_name> (<field1>,<field2>...) values(<value1>,<value2>.....)
2)刪除記錄
models.<class_name>.objects.filter(條件).delete() #刪除滿足條件的數據
models.<class_name>.objects.all.delete() #刪除表中所有的數據
3)查詢數據
data_list1 = models.<class_name>.objects.all() #獲取表中的所有數據QuerySet類型
for row in data_list1: #遍歷所有數據print(row.<field>) #獲取指定字段的數據
data_list2 = models.<class_name>.objects.filter(條件) #獲取滿足指定條件的數據
4)修改數據
#修改所有記錄的指定字段值
models.<class_name>.objects.all().update(<field>=<new value>)
#修改符合條件的記錄的指定字段值
models.<class_name>.objects.filter(條件).update(<field>=<new value>)