时间:2021-05-22
前言
Django作为重量级的Python web框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象。因此用ORM来操作数据库相当快捷。今天来介绍一下用ORM操作数据库。
一、创建Django项目
可以使用pycharme专业版直接快速创建。如果不是专业版也可以使用命令进行创建。下面列出命令行创建方式:
这时会在当前目录创建文件夹名为orm_test,接下来进入orm_test文件夹中,执行命令:
就启动了该项目,默认浏览器访问127.0.0.1:8000就可以看到项目运行成功的提示。
接下来我们用命令在项目中创建一个应用:
此时基本准备就做好了。
二、修改配置文件
把我们的应用即cmdb添加到 setting.py 的 INSTALLED_APPS 中:
另外我们基本用的是mysql数据库,但django中默认为sqlite3。仍然在setting.py中找到 DATABASES ,对内容进行修改:
里面的“NAME”的值是你数据库中已有的数据库名称,接下里在此数据库中创建数据表。
在python3 中,连接数据库的是pymysql,因此在项目同名文件夹下的__init__.py 中加入以下代码才能正常运行。
import pymysql pymysql.install_as_MySQLdb()三、写模板文件来创建表结构
在应用(cmdb)的 models.py 中开始写表结构,我们要做的就是写一个类,类中的属性为表中的列,ORM将类转换为sql语句。简单的写一个下面的类,包含用户名和密码两列。
四、生成数据表
在终端中输入命令行 python manage.py makemigrations ,这时会在应用(cmdb)下的migrations文件夹下出现一个_initial.py 的文件,它记录着生成数据表结构的一些数据的临时文件,接着在命令行中输入 python manage.py migrate,由刚才的临时文件生成数据表。我们在数据库中查看生成的数据表,可以看到django生成的不仅仅是刚创建的一个表,而是十多个表,除自己的一张表,剩余为django内部使用(包含有缓存,cookie,session等,毕竟这么厉害的框架为你做到你想不到的是应该的)。在终端中查看一下表结构:show create table cmdb_users;
看到的不仅有两个自定的属性列,多出一个id列,并且是自增的还是主键。
五、路由映射关系
在同名项目文件夹下的urls.py 中导入应用(cmdb),写映射关系到cmdb的views.py
六、视图及数据表的增删改查
在路由映射到应用(cmdb)下的views.py 中,右映射中写对应的函数,也就是login函数。用于显示的观察项目的运行,我们在此函数中就先简单得的打印到屏幕上一句“Hello World”。
在login函数中写入增删改查的语句。
启动项目后,浏览器访问127.0.0.1:8000/login 就可看到屏幕上的Hello World,表示相关的数据操作已成功修改数据表。
相关操作后数据表内容的变化如下:
七、django orm 常用查询筛选
先列举一下django orm中的常用查询的筛选方法:
model:
class User(AbstractBaseUser, PermissionsMixin): uuid = ShortUUIDField(unique=True) username = models.CharField(max_length=100, db_index=True, unique=True, default='') schoolid = models.CharField(max_length=100, null=True, blank=True, default='') classid = models.CharField(max_length=100, null=True, blank=True, default='') fullname = models.CharField(max_length=50, default='', null=True, blank=True) email = models.EmailField(_('email address'), blank=True, null=True) age = models.SmallIntegerField(default=0)大于、大于等于
__gt 大于__gte 大于等于User.objects.filter(age__gt=10) // 查询年龄大于10岁的用户User.objects.filter(age__gte=10) // 查询年龄大于等于10岁的用户小于、小于等于
__lt 小于__lte 小于等于User.objects.filter(age__lt=10) // 查询年龄小于10岁的用户User.objects.filter(age__lte=10) // 查询年龄小于等于10岁的用户in
__in查询年龄在某一范围的用户User.objects.filter(age__in=[10, 20, 30])like
__exact 精确等于 like 'aaa'__iexact 精确等于 忽略大小写 ilike 'aaa'__contains 包含 like '%aaa%'__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。is null / is not null
__isnull 判空User.objects.filter(username__isnull=True) // 查询用户名为空的用户User.objects.filter(username__isnull=False) // 查询用户名不为空的用户不等于/不包含于
User.objects.filter().excute(age=10) // 查询年龄不为10的用户User.objects.filter().excute(age__in=[10, 20]) // 查询年龄不为在 [10, 20] 的用户总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
ORM对象关系映射在数据库中,实现对数据的增删改查,使用的是SQ语句,在django中,通过python代码,实现对数据库的增删改查,这就是ORM。在pytho
stark组件是仿照django的admin模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作一、配置1、创建stark应用,在setting
C#操作Excel数据增删改查。首先创建ExcelDB.xlsx文件,并添加两张工作表。工作表1:UserInfo表,字段:UserId、UserName、Ag
自己搭建后台网站,需求:实现类似djangoAdmin站点对每一张表的增删改查权限控制。实现步骤:1.权限控制Django框架已自带,共6张表,User表,Gr
adminadmin是Django自带的后台管理组件,你可以在admin中执行增删改查等操作。它以可视化的方式让你来操纵模型表,十分的便捷。基本使用数据准备如下