使用pycharm开发Django2.2全过程(四)--数据库及模型层
2021/9/16 2:06:57
本文主要是介绍使用pycharm开发Django2.2全过程(四)--数据库及模型层,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
当涉及大数据存储及读取时,我们会使用数据库。在django里面,常用及默认的数据库是sqlite,也可在配置中更改为其他数据库。
通常,为了使用数据库,需要建立Model模型,每个Model模型对应数据库中唯一的一张表,模型的每个属性都表示为数据库中的一个字段,这个不随数据库的变更而改变(表结构一致,只需要修改API),从而减少了修改工作。
目录
- 1.安装数据库
- (1)在电脑上安装数据库
- (2)在当前python环境中安装 pymysql
- 2.连接数据库(sqlite)
- 3.数据库配置
- 4.创建模型
- 5.数据库迁移
- 6.操作模型控制数据库的增删改查
- 7.其他查询方式
1.安装数据库
(1)在电脑上安装数据库
mysql:
(要记住你设置的用户名及密码)
网址:下载
下载完成后开始安装:
(2)在当前python环境中安装 pymysql
pip install pymysql
2.连接数据库(sqlite)
(pycharm是专业版才可,学习中电脑mysql账号密码都对但是pycharm连接不上,网上找了很多资料暂未找到原因,为了接下来的学习,转用sqlite继续学习)
新建数据库
双击数据库,则出现右侧数据库,这里也可直接在此连接
如果你的数据库无法显示结构,可能是没有连接或缺失插件。在下图2的位置一般可弹出提示,点击安装即可,然后点击3测试成功后,刷新数据库即可。
3.数据库配置
常用有:
django.db.backends.postgresql django.db.backends.mysql django.db.backends.sqlite3 django.db.backends.oracle
按步骤2操作后,可以看到在setting文件中已更改:
mysql为如下格式:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mytest1',#数据库的名 'USER': 'root', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '3306', } }
4.创建模型
找到应用程序目录下的Models文件,我们在此文件中定义表结构。
常用字段:
字段 | 说明 |
---|---|
AutoField | 自动创建一个自增的 列 ,如果要显式的自定义一个自增列,必须设置primary_key=True。 要注意.一个model类不能有两个自增的AutoField |
CharField | 字符串字段 ,必须设置max_length参数 ,如果超过254个字符,建议使用TextField |
BooleanField | 布尔类型,不可为空(NullBooleanField为允许未空的布尔类型) |
DateField | 日期类型 (date),自动设置该字段为现在日期用DateField.auto_now,第一次被创建时自动设置该字段为现在日期用DateField.auto_now_add |
DateTimeField | 日期(datetime ),同DateField的参数 |
FloatField | 浮点数 |
IntegerField | 整型 |
EmailField | 带有检查 Email 合法性的 CharField |
TextField | 大文本。默认对应的form标签是textarea |
除上面的表格内容,还有很多字段,可自行按需搜索
5.数据库迁移
通过迁移命令执行迁移后,会根据model.py文件定义的类字段生成对应的sql语句脚本,进行相应的数据库操作。
代码如下:
# 生成迁移文件 全部迁移不写模块名 python manage.py makemigrations [模块名] #执行迁移 全部迁移不写模块名 python manage.py migrate [模块名]
此时刷新数据库:
6.操作模型控制数据库的增删改查
导入模型:
from myapp.models import PeopleInfo
查:
【模型类名】.objects.【方法】(【条件】)
常见方法有如下:
方法 | 说明 |
---|---|
get() | 返回满足条件的单条数据(多条或者0条会报错) |
count() | 返回查询集中的数据个数 |
first() | 取第一个值 |
last() | 取最后一个值 |
exists() | 判断是否存在 |
all() | 返回所有数据 |
filter(条件) | 返回符合条件的数据 |
exclude(条件) | 返回不符合条件的数据 |
values() | 返回字典列表 |
order_by() | 排序查询. 默认为升序排列,降序可在字段前加一个负号 |
例如: PeopleInfo.objects.get(name=‘yy’)为返回name为yy的对象
常用条件:
条件 | 说明 |
---|---|
exact | 相等 |
gt | 大于 |
gte | 大于等于 |
lt | 小于 |
lte | 小于等于 |
isnull | 为空查询 |
contains | 包含 |
startswith | 以什么开头 |
endswith | 以什么结尾 |
in | 在什么范围 |
例如:PeopleInfo.objects.get(name__exact=“yy”)为返回name为yy的对象
例如:PeopleInfo.objects.get(name__endswith=‘t’)
例如:PeopleInfo.objects.filter(name__in= [“name1”,“name2”]
增:
#第一种方式 user=PeopleInfo.objects.create(name='uu',age=11,sex=1,) user.save() #第二种方式 user2=PeopleInfo(name='yy',age=23,sex=0) user2.save()
删:
# 第一种方式 user = PeopleInfo.objects.create(name='uu', age=11, sex=1, ) user.delete() # 第二种方式 PeopleInfo.objects.filter(id=2).delete()
改:
# 第一种方式 user = PeopleInfo.objects.create(name='uu', age=11, sex=1, ) user.age=3 user.save() # 第二种方式 PeopleInfo.objects.filter(id=2).update(age=2)
7.其他查询方式
F对象:
常用于同行数据字段间的互相比较
例如:
from django.db.models import F PeopleInfo.objects.filter(name=F('age'))
Q对象:
常用于字段间的逻辑比较
from django.db.models import Q PeopleInfo.objects.filter(id=6).filter(age=10) PeopleInfo.objects.filter(Q(id=6)|Q(age=10)) PeopleInfo.objects.filter(~Q(id=6))
这篇关于使用pycharm开发Django2.2全过程(四)--数据库及模型层的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南