利用orm对数据库库表的相关操作

方式一:

# create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象

  book_obj=Book.objects.create(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")

方式二:

book_obj=Book(title="python葵花宝典",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12")

book_obj.save()  # 对象.save()是必须有的

推荐用方式一

查询数据库常用的方法 ==》和查询请求体里面属性不同,注意区分, 查询请求体request.POST是一个queryset,这里用get方法查不到值默认返回None,而查询数据库get不到对象会直接报错。

  book_obj=Book.objects.方法(参数视方法而定)

 1 <1> all():                  查询所有结果
 2
 3 <2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
 4
 5 <3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
 6                             如果符合筛选条件的对象超过一个或者没有都会抛出错误。
 7
 8 <4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
 9
10 <5> order_by(*field):       对查询结果排序
11
12 <6> reverse():              对查询结果反向排序
13
14 <8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
15
16 <9> first():                返回第一条记录
17
18 <10> last():                返回最后一条记录
19
20 <11> exists():              如果QuerySet包含数据,就返回True,否则返回False
21
22 <12> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
23                             model的实例化对象,而是一个可迭代的字典序列
24 <13> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
25
26 <14> distinct():            从返回结果中剔除重复纪录

基于双下划线的模糊查询

1 Book.objects.filter(price__in=[100,200,300])
2 Book.objects.filter(price__gt=100)
3 Book.objects.filter(price__lt=100)
4 Book.objects.filter(price__range=[100,200])
5 Book.objects.filter(title__contains="python")
6 Book.objects.filter(title__icontains="python")
7 Book.objects.filter(title__startswith="py")
8 Book.objects.filter(pub_date__year=2012)

删除表记录

开始我们直接注释,然后makemigrations==》migrate直接刷入,下面直接调用封装的方法,更简便一点

注意一点:不能直接调用表名.objects进行删除!!!看下面

 1 删除方法就是 delete()。它运行时立即删除对象而不返回任何值。例如:
 2
 3
 4 model_obj.delete()
 5 你也可以一次性删除多个对象。每个 QuerySet 都有一个 delete() 方法,它一次性删除 QuerySet 中所有的对象。
 6
 7 例如,下面的代码将删除 pub_date 是2005年的 Entry 对象:
 8
 9 Entry.objects.filter(pub_date__year=2005).delete()
10 在 Django 删除对象时,会模仿 SQL 约束 ON DELETE CASCADE 的行为,换句话说,删除一个对象时也会删除与它相关联的外键对象。例如:
11
12
13 b = Blog.objects.get(pk=1)
14 # This will delete the Blog and all of its Entry objects.
15 b.delete()
16 要注意的是: delete() 方法是 QuerySet 上的方法,但并不适用于 Manager 本身。这是一种保护机制,是为了避免意外地调用 Entry.objects.delete() 方法导致 所有的 记录被误删除。如果你确认要删除所有的对象,那么你必须显式地调用:
17
18
19 Entry.objects.all().delete()  
20 如果不想级联删除,可以设置为:
21
22
23 pubHouse = models.ForeignKey(to=‘Publisher‘, on_delete=models.SET_NULL, blank=True, null=True)

修改表记录

Book.objects.filter(title__startswith="py").update(price=120)

此外,update()方法对于任何结果集(QuerySet)均有效,这意味着你可以同时更新多条记录update()方法会返回一个整型数值,表示受影响的记录条数。  

原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9567982.html

时间: 2024-10-11 03:53:55

利用orm对数据库库表的相关操作的相关文章

oracle——数据表的相关操作——删除数据表

创建数据表; create table 表名 ( 列明1 数据类型1 [约束性条件], 列明1 数据类型1 [约束性条件], …… ) tablespace 表空间 create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test sele

oracle——数据表的相关操作——转移表空间

创建数据表; create table 表名 ( 列明1 数据类型1 [约束性条件], 列明1 数据类型1 [约束性条件], …… ) tablespace 表空间 create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test sele

oracle——数据表的相关操作——重新命名一个列名

create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test select * from student05; 数据表的相关操作 1.增加新列 alter table student 用于修改表的结构,add用于增加列,注意此处没有co

oracle——数据表的相关操作——删除已有列

create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test select * from student05; 数据表的相关操作 1.增加新列 alter table student 用于修改表的结构,add用于增加列,注意此处没有co

MySQL数据库和表的相关操作

执行如下命令,查看系统库 show databases; 求救语法: help create database; 创建数据库语法 CREATE DATABASE 数据库名 charset utf8; 数据库相关操作 #查看数据库show databases;#查看当前库show create database db1;#查看所在的库select database(); #选择数据库use 数据库名 #删除数据库DROP DATABASE 数据库名;# 修改数据库alter database db

修改数据库库表的字符集

数据字符集修改步骤 对应已经存在的数据库想修改字符集,不能直接通过"alter database character set *" 或者"alter table tablename character set *" ,这两个命令都没有更新已有记录的字符集,而只是对新创建的表或者记录生效. 已经有记录的字符集的调整,必须想将数据导出,经过修改字符集后重新导入才能完成 修改数据库默认编码 alter database 数据库名称 charset 字符集名称 alter

如何更改生产MySQL数据库库表的字符集

以前学习mysql的时候,实验的笔记,今天整理的时候看到了,所以记录下,备忘 1.导出表结构 mysqldump -uroot -predhat12345 -S /data/3306/mysql.sock --default-character-set=latin1 -d kitty>kittytable.sql 说明:-d只导表结构 2.编辑kittytable.sql,将lantin1改成utf8 可以用sed批量修改 3.确保数据库不再更新,导出所有数据 mysqldump -uroot

MySQL之对数据库库表的字符集的更改

数据字符集修改步骤: 对于已有的数据库想修改字符集不能直接通过 "alter database character set *"或 "alter table tablename character set *",这两个命令都没有更新已有记录的字符集,而只是对新创建的表或者记录生效. 已经有记录的字符集的调整,必须先将数据导出,经过修改字符集后重新导入后才可完成. 修改数据库默认编码: alter database [your db name] charset [yo

数据表的相关操作

1.主键约束 特点非空,只用于表示当前的记录. 设置主键:create table 表名(sid int primary key); 删除主键:alter table 表名 drop primary key ; 主键自动增长:主键字段后加 auto_increment ,只适用于masql 2.常见的表操作 查看数据库中的所有的表: show table; 查看表的结构:desc 表名: 删除表:drop table 表名: 3.修改表的结构 添加列: alter table 表名 add 列名