django notes 六:数据库 CRUD 操作

CRUD 也没什么可说的,django 提供了完善的 orm  api, 直接用就行了。

我只贴几个列子,一看就明白了,自己再用用就熟了。

# create
b = Blog(name=‘Beatles Blog‘, tagline=‘All the latest Beatles news.‘)
b.save()

# create and save
Blog.objects.create(name=‘Beatles Blog‘, tagline=‘All the latest Beatles news.‘)

# update, 外键字段也是一样的
b5.name = ‘New name‘
b5.save()

# 添加 ManyToManyField 用 add
joe = Author.objects.create(name="Joe")
entry.authors.add(joe)

# delete
e.delete()
Entry.objects.filter(pub_date__year=2005).delete()

# 查询 QuerySet
# 默认都是 lazy query, 用到时才会真正执行数据库查询

# 打印生成的 sql 语句, 直接访问 QuerySet 实例的 query 属性
t = Tag.objects.all()
print t.query

# get all
all_entries = Entry.objects.all()

# 查询字段  field + 双下环线 + 操作的类型
Entry.objects.all().filter(pub_date__year=2006)
Entry.objects.filter(pub_date__lte=‘2006-01-01‘)

# 取 1 条数据,取不到会抛  DoesNotExist 异常,取到多条时会抛 MultipleObjectsReturned 异常
one_entry = Entry.objects.get(pk=1)

# slice
Entry.objects.all()[:5]  # 转成 sql 是 LIMIT 5

# 外键字段引用
Entry.objects.filter(blog_id=4)
Entry.objects.filter(blog__name=‘Beatles Blog‘)

# F expressions 引用并操作数据库字段
from django.db.models import F
Entry.objects.filter(n_comments__gt=F(‘n_pingbacks‘))
Entry.objects.filter(n_comments__gt=F(‘n_pingbacks‘) * 2)

# 主键查询
Blog.objects.get(id=14) # __exact is implied
Blog.objects.get(pk=14) # pk implies id__exact

# Q object 执行数据库 and  or  操作
Q(question__startswith=‘Who‘) | Q(question__startswith=‘What‘) # WHERE question LIKE ‘Who%‘ OR question LIKE ‘What%‘
Q(question__startswith=‘Who‘) & Q(name=‘leslie‘)

# order_by 默认升序,- 表示降序
Entry.objects.filter(pub_date__year=2005).order_by(‘-pub_date‘, ‘headline‘)

# Manager.raw() 方法执行 raw sql
for p in Person.objects.raw(‘SELECT * FROM myapp_person‘):
    print(p)
至于完全手动控制 sql 查询,数据库事物,signal,查询优化和其它细节,用到时直接参考官方文档和源码就行了,我也没用过
时间: 2024-12-30 03:15:54

django notes 六:数据库 CRUD 操作的相关文章

2.3、django项目对数据库的操作

在讲django项目对数据库操作之前先看看MyOSS/MyOSS的几个文件吧. /MyOSS …__init__py #在python里,不管是class,还是django里的project和app都一个这个的文件,表示初始化该类或者模块 …settings.py #Django项目主要的配置文件,比如数据库引擎,数据库配置,语言,字符编码,支持的调试模式,时区,已经加载的模块,静态文件目录,根目录的URL配置等等.. …models.py #Django项目数据库映射文件. …urls.py

数据库CRUD操作

一.删除表   drop table 表名称 二.修改表 alter   table 表名称 add  列名 数据类型   (add表示添加一列) alter  table  表名称 drop column 列名称( column表示列   drop表示删除) 三.删除数据库 drop database 数据库 四.CRUD操作(create 添加数据read读取数据 update 修改数据delete删除数据) 1.添加数据(create) a:      insert into + nati

数据库CRUD操作:C:create创建(添加)、R:read读取、U:update:修改、D:delete删除

1.注释语法:--,#2.后缀是.sql的文件是数据库查询文件3.保存查询4.在数据库里面 列有个名字叫字段   行有个名字叫记录 CRUD操作:create 创建(添加)read 读取update 修改delete 删除 1.添加数据insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ; 给特定的列添加数据insert into Info (code,name) values('p010','李四');自增长列的处理

数据库CRUD操作以及MyBatisd的配置使用

• 业务字段设计 • 数据库创建 • CRUD操作 • MyBatis集成 • 注解和XML定义 • ViewObject和DateTool • 首页开发 • 业务字段设计 实体: • 数据库创建 GUI版本管理工具创建,然后通过GUI转SQL: • CRUD操作 insert into table_name (列1, 列2,...) VALUES (值1, 值2,....): select 列名1,列名2 from 表名称 where 条件: 条件: between 1 and 2 order

使用node_redis进行redis数据库crud操作

正在学习使用pomelo开发游戏服务器,碰到node.js操作redis,记录一下 假设应用场景是操作一个用户表的数据 引入node_redis库,创建客户端 var redis = require("redis"); var client = redis.createClient(); 创建用户数据 var players = new Array(); players.push({"id":49, "name":"test playe

Django model与数据库操作对应关系(转)

? Django对数据库的操作分用到三个类:Manager.QuerySet.Model. Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法: QuerySet是Manager的方法返回的,是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法. Model是一条记录的类,它的功能很强大,里面包含外键实体等,它的方法都是记录级方法(都是实例方

第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作

第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)基本的索引和文档CRUD操作 elasticsearch(搜索引擎)基本的索引和文档CRUD操作 也就是基本的索引和文档.增.删.改.查.操作 注意:以下操作都是在kibana里操作的

10天学会phpWeChat——第九天:数据库增、删、改、查(CRUD)操作

数据库的操作(CRUD)是一个现代化计算机软件的核心,尤其针对web应用软件.虽然在前面的几讲里,我们针对数据库操作大致有了一些了解,但今天我们需要再次强化下. 除了新瓶装老酒,我们今天还引入一个新的数据库操作方法:连贯操作. 今天讲解的内容是基于phpWeChat核心框架1.1.3版本, 下载地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20 框架更新:http://bbs.phpwechat.com/forum-2-1

Django项目实践3 - Django模型(数据库字段及操作)

http://blog.csdn.net/pipisorry/article/details/45725953 数据库字段 时间字段 DateTimeField和DateField和TimeField存储的内容分别对应着datetime(),date(),time()三个对象. auto_now=Ture,字段保存时会自动保存当前时间,但要注意每次对其实例执行save()的时候都会将当前时间保存,也就是不能再手动给它存非当前时间的值. auto_now_add=True,字段在实例第一次保存的时