当前位置:Gxlcms > 数据库问题 > django notes 六:数据库 CRUD 操作

django notes 六:数据库 CRUD 操作

时间:2021-07-01 10:21:17 帮助过:2人阅读

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,查询优化和其它细节,用到时直接参考官方文档和源码就行了,我也没用过

django notes 六:数据库 CRUD 操作

标签:

人气教程排行