Django Sqlite3 / ORM
sqlite是二進位檔案,副檔名是什麼不重要mydb.db / mydb.sqlite / mydb.splite3
mac sqlite 命令列
>sqlite3 table_name
.help
.quit
.tables
.schema table_name
insert into table_name values(,);
ORM
Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程式設計技術,用於實現物件導向程式語言裡不同類型系統的資料之間的轉換。 從效果上說,它其實是創建了一個可在程式語言裡使用的「虛擬物件資料庫」。
資料庫有兩種
(一)關係模型 一對一 一對多 多對多 大部分資料庫採用
(二)物件模型 相對進步 才能描述繼承
Account表 是Table資料庫,每一行資料都是Account實例
Account Class 是結構
Account實例 是類的實例
定义数据模型
model.py
from django.db import models
# 创建用户模型
class User(models.Model):#繼承自django.db.models.Model類
name = models.CharField( primary_key = True , max_length = 100 )
password = models.CharField( max_length = 100 )
email = models.EmailField( max_length = 50 , null = True )
birthday = models.DateField( null = True )
# 定义表的元数据 (元數據:描述其他數據的數據 描述數據庫與表的關聯)
class Meta:
db_table = ‘users’ # 定义表名
ordering = [ ‘name’ ] # 设置排序字段
常用的字段类型:
AutoField:自增长字段。
CharField:可以指定最大值和最小值的字符字段。
TextField:字符串字段。
DateField:日期字段。
DateTimeField:日期时间字段。
TimeField:时间字段。
EmailField:email字段。
IntegerField:整数字段。
DecimalField:十进制数字段。
FloatField:浮点数字段。
ImageField:图片字段。
字段可选项:
null:设置是否字段可以为null。
blank:设置是否字段可以为空白。
default:设置默认值。
primary_key:设置主键。
unique:设置为候选键。
表的元数据类(Meta)
在表中定义元数据类Meta,它是一个嵌套类。元数据类Meta的属性:db_table:指定表名。
ordering:设置排序字段。
abstract:如果设置为True,说明该模型是抽象的,系统不会生成对应的表,它只能作为父类使用。
同步数据库
模型設定好,需要同步至資料庫
模型修改之后,需要执行如下指令:
python manger.py makemigrations
python manager.py migrate
makemigrations:负责生成数据库迁移计划,生成迁移执行文件。
migrate:负责执行或取消数据库迁移。
進入shell操作CRUD (Create Delete Update Read)
python manage.py shell(才有Django的環境,如果是 IDEL沒有Django的設定)
1-1查询所有
使用User.objects.all()方法,返回的QuerySet集合。
>>> from books.models import User ###
>>> User.objects.all()
<QuerySet [<User: User object (Tony)>]>
User.objects.all()是查询所有数据。QuerySet
1-2条件查询
User.objects.filter()方法返回是#QuerySet集合。
>>> from books.models import User
>>> User.objects.filter(name=’Tony’)
<QuerySet [<User: User object (Tony)>]>
User.objects.get()方法返回是#模型物件。
>>> User.objects.get(name=’Tony’)
<User: User object (Tony)>
s= User.objects.filter(name=’Tony’)
s[0] #取出模型物件第一個元素
<User: User object (Tony)>
2插入数据
方法1:
User.objects.create()方法對應字段插入数据
>>> User.objects.create(name=’关东升’,password=’123',birthday=’1978–5–6')
<User: User object (关东升)>
方法2:
创建模型物件,调用模型的save()方法实现。
>>> user = User(name=’Tom’,password=’123',birthday=’1977–5–6')
>>> user.save()
3修改数据
先查找模型,修改模型字段,调用模型的save()方法实现。
>>> u = User.objects.get(name=’Tony’) #先查找模型
>>> u.email = ‘125@qq.com’
>>> u.save()
4删除数据
先查找模型,调用delete()方法实现。
>>> u = User.objects.get(name=’Tony’)#先查找模型
>>> u.delete()