一、数据库连接配置

  • 如果连接的是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环境相关推荐

  1. django调用python脚本返回_Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境...

    单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的settin ...

  2. mybatis --入门 单表增删改查-curd

    目录 1. mybatis 环境搭建 2. 实体类映射文件配置(写sql) 3. mybatis核心配置文件 (环境配置) 4. 测试 mybatis document https://mybatis ...

  3. C# 功能完整的单表增删改查程序

    id字段自增,标识增量和种子1: using System; using System.Collections.Generic; using System.ComponentModel; using ...

  4. $Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境...

    0在Python脚本中调用Django环境. import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTIN ...

  5. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  6. mysql如何修改学生表_MySQL 详细单表增删改查crud语句

    MySQL 增删改查语句 1.创建练习表 这里练习表没有满足三范式 第一范式(又称 1NF):保证每列的原子性 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性.满足第一范 ...

  7. 增删改查最终总结—2.1.1(单表-增删改查)

    一个 Mybatis 开发神器:Fast MyBatis 超好用 --------Fast Mybatis开发文档 每一个增删改查前都要先看这个--增删改查操作 都需要注意: 1.在控制层最后一行代码 ...

  8. springboot整合mybatis实现简单的单表增删改查(完整代码可下载)

    搭建项目 项目简单效果,前端效果丑的一批,主要是后端功能实现: springboot增删改查 csdn完整代码下载链接: springboot+mybatis Gitee下载地址: Gitee下载地址 ...

  9. django(七)之数据库表的单表-增删改查QuerySet,双下划线

    https://www.cnblogs.com/haiyan123/p/7738435.html https://www.cnblogs.com/yuanchenqi/articles/6083427 ...

最新文章

  1. vscode快速注释_Python快速入门(一)
  2. python 调试命令
  3. Python Tutorial(六):模块
  4. PHP gd库 验证码
  5. 大型情感剧集Selenium:8_selenium网页截图的四种方法
  6. 天池notebook
  7. 【C++】C++11 新特性(auto,decltype,nullptr,快速遍历,【Lambda表达式详解】)
  8. python for everybody作业和测试答案_PY4E-Python for Everybody课后作业答案
  9. 石墨文档服务器版,石墨文档功能一览
  10. ABP框架----添加权限
  11. 计算机的声卡怎么安装教程,图文详解如何安装声卡驱动_给电脑安装声卡驱动的详细教程...
  12. 大学计算机第一课知识点,大学计算机基础第一课
  13. 华为od与中软外包哪个更好_记录下入职中软一个月(外包华为
  14. atto软件测试速度,那种才是正确的,ATTO Disk Benchmark测试结果到底怎么算?
  15. 如何保障短网址的安全性?
  16. 博士申请 | 美国佐治亚理工学院陶默雷教授招收机器学习方向全奖博士生
  17. 优化易语言程序占用内存
  18. chrome浏览器安全检查_为您的Chrome浏览器检查皮肤
  19. Android实现截屏方式
  20. linux 下 PHP 环境搭建(已测试)

热门文章

  1. android音视频开发面试,来看看移动端小程序技术的前世今生!真香
  2. Ubuntu18.04 :cubeMx + vscode+stLink 踩坑
  3. Tensorflow2.0 VGG实现图片分类
  4. 获得 NextDate 【明天】
  5. My SQL的安装与卸载
  6. OpenCV_电路板焊点的定位
  7. ISTQB®的证书有效期是多久?与国内同类认证有何区别?考试形式是什么样的?...
  8. JLOI 2013 卡牌游戏 bzoj3191
  9. arcgis 出图背景_利用ArcGIS做一张quot;三调quot;土地利用现状图
  10. 使用轻量应用服务器部署Docsify在线文档平台