Django框架(八)--单表增删改查,在Python脚本中调用Django环境
一、数据库连接配置
如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可
如果连接mysql,需要在配置文件中的setting中进行配置:
将DATABASES={} 更新为
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1','PORT': 3306,'USER': 'root','PASSWORD': 'pie123','NAME': 'test_database',} }
同时还要在__init__.py文件中进行初始化设置:
# 因为django默认链接mysql数据库,用的是MySQLdb模块,python3.0以后,不支持MySQLdb,需要用pymysql替换MySQLdb import pymysql pymysql.install_as_MySQLdb()
配置完以后,要进行数据迁移(在pycharm的终端Terminal中运行指令),否则数据更新不能同步到mysql数据库中
python manage.py makemigrations ----记录数据库的变化,在migrations文件中可以看到记录 python manage.py migrate ----将变化同步到数据库中
或者
菜单 tools--->Run manage.py Task,即可进入manage.py,直接输入以下指令即可
makemigrations ----记录数据库的变化,在migrations文件中可以看到记录 migrate ----将变化同步到数据库中
显示没有提交到数据库的数据
python3 manage.py showmigrations ---->查看那个没有提交到数据库
二、orm创建表和字段
1、orm的使用限制
只能创建数据表和字段,不能创建数据库(必须手动创建数据库)
创建一个类就表示创建了一个数据表,类中的属性表示数据表中的字段
创建表和字段在modules.py中
类 ---> 数据表 属性 ---> 字段
2、orm创建表和字段
在app的 models.py 中创建表
# 类必须继承models.Model类,否则只表示一个普通的类 # AutoField 自动增长的int类型 # primary_key=True 该字段是主键 # CharField(max_length=32) 表示 varchar(32) class User(models.Model):id = models.AutoField(primary_key=True)name = models.CharField(max_length=32)password = models.CharField(max_length=32)address = models.CharField(max_length=32)
三、单表增删改查
1、增加数据
(1)方式一
# 直接创建数据,返回值是一个对象 book = models.Book.objects.create(name='西游记',price=50.5) print(book.name)
(2)方式二
book = models.Book.objects.filter(name='西游记').first() book.delete()
3、修改数据
(1)方式一
models.Book.objects.filter(name='西游记').update(name='红楼梦')
(2)方式二
对象没有update方法,可以利用对象获取它的属性,来修改数据,改完后要保存
book = models.Book.objects.filter(name='西游记').first() book.name = '红楼梦' book.save()
4、查询数据
# 调用queryset对象的query可以查看对应的sql语句 res = models.Book.objects.all() print(res.query)
(1)查询数据API
# 1. all(): 查询所有结果res = models.Book.objects.all()# 2. filter(**kwargs): 它包含了与所给筛选条件相匹配的对象,用逗号分隔,他们之间是and的关系res = models.Book.objects.filter(name='西游记',price='14')# 3. get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。res = models.Book.objects.filter(id=1)# 4. exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象,用逗号分隔,他们之间是and的关系res = models.Book.objects.exclude(name='西游记',price='23.8')# 5. order_by(*field): 对查询结果排序('-id'),字段名钱前加 “-” 表示从大到小排序res = models.Book.objects.all().order_by('price')res = models.Book.objects.all().order_by('-price') # 6. reverse(): 对查询结果反向排序,一定要先排序才能反向排序res = models.Book.objects.all().order_by('-price').reverse()# 7. count(): 返回数据库中匹配查询(QuerySet)的对象数量。res = models.Book.objects.all().filter(name='西游记').count()# 8. first(): 返回第一条记录res = models.Book.objects.all().first()# 9. last(): 返回最后一条记录res = models.Book.objects.all().last()# 10. exists(): 如果QuerySet包含数据,就返回True,否则返回Falseres = models.Book.objects.filter(name='三国演义').exists()# 11. values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列,model的实例化对象,而是一个可迭代的字典序列res = models.Book.objects.all().values('name','price') # 返回值为QuerySet对象<{name='红楼梦',price=18},{name='西游记',price=58}># 12. values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列res = models.Book.objects.all().values_lists('name','price') # 返回值为QuerySet对象<(name='红楼梦',price=18),(name='西游记',price=58)># 13. distinct(): 从返回结果中剔除重复纪录,只要带了id,去重就没有意义了res = models.Book.objects.all().values('name').distinct()
(2)基于上下划线的模糊查询
# 1. __in 字段的值在其中 Book.objects.filter(price__in=[100,200,300])# 2. __gt 字段的值大于指定值 Book.objects.filter(price__gt=100)# 3. __lt 字段的值小于指定值 Book.objects.filter(price__lt=100)# 4. __gte 字段的值大于等于指定值 Book.objects.filter(price__gte=100)# 5. __lte 字段的值小于等于指定值 Book.objects.filter(price__lte=100)# 6. __range 字段的值在指定区间内,包含头和尾 Book.objects.filter(price__range=[100,200])# 7. __contains 字段的值包含指定值,区分大小写 Book.objects.filter(title__contains="python")# 8. __icontains 字段的值包含指定值,不区分大小写 Book.objects.filter(title__icontains="python")# 9. __startswith 字段的值以指定值开头 Book.objects.filter(title__startswith="py")# 10. __endswith 字段的值以指定值开头 Book.objects.filter(title__startswith="on")# 11. __year 日期格式的年为指定值 Book.objects.filter(pub_date__year=2012)
四、在Python脚本中调用Django环境
import os if __name__ == '__main__':os.environ.setdefault("DJANGO_SETTINGS_MODULE", "untitled15.settings")import django# 启动Django环境 django.setup()from app01 import modelsbooks = models.Book.objects.all()print(books)
转载于:https://www.cnblogs.com/zhangbingsheng/p/10632475.html
Django框架(八)--单表增删改查,在Python脚本中调用Django环境相关推荐
- django调用python脚本返回_Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境...
单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的settin ...
- mybatis --入门 单表增删改查-curd
目录 1. mybatis 环境搭建 2. 实体类映射文件配置(写sql) 3. mybatis核心配置文件 (环境配置) 4. 测试 mybatis document https://mybatis ...
- C# 功能完整的单表增删改查程序
id字段自增,标识增量和种子1: using System; using System.Collections.Generic; using System.ComponentModel; using ...
- $Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境...
0在Python脚本中调用Django环境. import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTIN ...
- MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物
MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...
- mysql如何修改学生表_MySQL 详细单表增删改查crud语句
MySQL 增删改查语句 1.创建练习表 这里练习表没有满足三范式 第一范式(又称 1NF):保证每列的原子性 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性.满足第一范 ...
- 增删改查最终总结—2.1.1(单表-增删改查)
一个 Mybatis 开发神器:Fast MyBatis 超好用 --------Fast Mybatis开发文档 每一个增删改查前都要先看这个--增删改查操作 都需要注意: 1.在控制层最后一行代码 ...
- springboot整合mybatis实现简单的单表增删改查(完整代码可下载)
搭建项目 项目简单效果,前端效果丑的一批,主要是后端功能实现: springboot增删改查 csdn完整代码下载链接: springboot+mybatis Gitee下载地址: Gitee下载地址 ...
- django(七)之数据库表的单表-增删改查QuerySet,双下划线
https://www.cnblogs.com/haiyan123/p/7738435.html https://www.cnblogs.com/yuanchenqi/articles/6083427 ...
最新文章
- vscode快速注释_Python快速入门(一)
- python 调试命令
- Python Tutorial(六):模块
- PHP gd库 验证码
- 大型情感剧集Selenium:8_selenium网页截图的四种方法
- 天池notebook
- 【C++】C++11 新特性(auto,decltype,nullptr,快速遍历,【Lambda表达式详解】)
- python for everybody作业和测试答案_PY4E-Python for Everybody课后作业答案
- 石墨文档服务器版,石墨文档功能一览
- ABP框架----添加权限
- 计算机的声卡怎么安装教程,图文详解如何安装声卡驱动_给电脑安装声卡驱动的详细教程...
- 大学计算机第一课知识点,大学计算机基础第一课
- 华为od与中软外包哪个更好_记录下入职中软一个月(外包华为
- atto软件测试速度,那种才是正确的,ATTO Disk Benchmark测试结果到底怎么算?
- 如何保障短网址的安全性?
- 博士申请 | 美国佐治亚理工学院陶默雷教授招收机器学习方向全奖博士生
- 优化易语言程序占用内存
- chrome浏览器安全检查_为您的Chrome浏览器检查皮肤
- Android实现截屏方式
- linux 下 PHP 环境搭建(已测试)
热门文章
- android音视频开发面试,来看看移动端小程序技术的前世今生!真香
- Ubuntu18.04 :cubeMx + vscode+stLink 踩坑
- Tensorflow2.0 VGG实现图片分类
- 获得 NextDate 【明天】
- My SQL的安装与卸载
- OpenCV_电路板焊点的定位
- ISTQB®的证书有效期是多久?与国内同类认证有何区别?考试形式是什么样的?...
- JLOI 2013 卡牌游戏 bzoj3191
- arcgis 出图背景_利用ArcGIS做一张quot;三调quot;土地利用现状图
- 使用轻量应用服务器部署Docsify在线文档平台