创建学生类
vim app0904/models.py from __future__ import unicode_literals from django.db import models # Create your models here. class Student(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=50) age=models.IntegerField() sex=models.IntegerField() class Meta: db_table='student'
同步数据库
[root@localhost project0904]# python manage.py makemigrations Migrations for 'app0904': app0904/migrations/0001_initial.py: - Create model Student [root@localhost project0904]# python manage.py migrate Operations to perform: Apply all migrations: admin, app0904, auth, contenttypes, sessions Running migrations: Applying app0904.0001_initial... OK
插入几个测试的Student
[root@localhost project0904]# python manage.py shell Python 2.7.5 (default, Jun 17 2014, 18:11:42) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> >>> >>> >>> from app0904.models import Student >>> Student.objects.create(id=1,name='zhangsan',age=11,sex=0) <Student: Student object> >>> Student.objects.all() <QuerySet [<Student: Student object>]> >>> Student.objects.all().get(id=1) <Student: Student object> >>> Student.objects.all()[0].id 1 >>> Student.objects.all()[0].name u'zhangsan' >>> >>> >>> Student.objects.create(id=2,name='lisi',age=12,sex=0) <Student: Student object>
创建测试模版
from django.shortcuts import render from app0904.models import Student def student_list(request): #studentList=Student.objects.all()#所有学生 #studentList=Student.objects.order_by('-age','id')#年龄倒序 id排序 studentList=Student.objects.filter(age__gte=11)#年龄大于11 return render(request,'student_list.html', {'studentList':studentList})
修改URLs.py
[root@localhost project0904]# vim project0904/urls.py from django.conf.urls import url from django.contrib import admin from app0904 import views urlpatterns=[ url(r'^$',views.main), url(r'^admin/',admin.site.urls), url(r'^studentlist/$',views.student_list), url(r'^hello/$',views.hello), url(r'^hellop1/(.+)/$',views.helloParam), url(r'^hello/(.+)/(.+)/$',views.helloParams), url(r'^hellopp/',views.helloPar)]
创建html文件
[root@localhost templates]# pwd /root/project0904/app0904/templates [root@localhost templates]# vim student_list.html {% extends 'base.html' %} {% block title%}studentlist{%endblock%} {% block content%} {%for student in studentList%} <li>{{student.id}},{{student.name}},{{student.age}},{{student.sex}}</li> {%empty%} sorry {% endfor %} {% endblock %}
django ORM model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
1.多表连接查询:感觉django太NX了。
class A(models.Model):
name = models.CharField(u'名称')
class B(models.Model):
aa = models.ForeignKey(A)
B.objects.filter(aa__name__contains='searchtitle')
1.5 反向查询,补上记录1.5,感觉django太太太NX了。
class A(models.Model):
name = models.CharField(u'名称')
class B(models.Model):
aa = models.ForeignKey(A,related_name="FAN")
bb = models.CharField(u'名称')
查A: A.objects.filter(FAN__bb='XXXX'),都知道related_name的作用,A.FAN.all()是一组以A为外键的B实例,可前面这样的用法是查询出所有(B.aa=A且B.bb=XXXX)的A实例,然后还可以通过__各种关系查找,很好用!!!
2.条件选取querySet的时候,filter表示=,exclude表示!=。
querySet.distinct() 去重复
__exact 精确等于 like 'aaa'
__iexact 精确等于 忽略大小写 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
例子:
>> q1 = Entry.objects.filter(headline__startswith="What")
>> q2 = q1.exclude(pub_date__gte=datetime.date.today())
>> q3 = q1.filter(pub_date__gte=datetime.date.today())
>>> q = q.filter(pub_date__lte=datetime.date.today())
>>> q = q.exclude(body_text__icontains="food")
即q1.filter(pub_date__gte=datetime.date.today())表示为时间>=now,q1.exclude(pub_date__gte=datetime.date.today())表示为<=now
2013/12/12补充:
“在django models中取得一个字段的distinct值”。就是select distinct xxx from table_name ...这样的功能。使用values会生成ValuesQuerySet(形如N个dict组成的list),猜测大数据无额外性能影响,毕竟queryset系列都是使用时才查询操作的。
xxxx.objects.values("field_name").distinct()
#或者
xxxx.objects.distinct().values("field_name")
这两句生成的sql语句相同
关于缓存:
queryset是有缓存的,a = A.objects.all(),print [i for i in a].第一次执行打印会查询数据库,然后结果会被保存在queryset内置的cache中,再执行print的时候就会取自缓存。
很多时候会遇到仅需判断queryset是否为空的情况,可以1. if queryset:pass 2.if queryset.count>0:pass 3.if queryset.exists():pass. 三种方式性能依次提升。
当queryset非常巨大时,cache会成为问题。此时可以queryset.iterator(),迭代器的用处就不多说了,根据具体需求情况使用。
增
myclass.objects.filter(aa='123') .order_by("‐aa")
相关推荐
在使用Django框架开发Web应用时,数据库的同步是一个常见且重要的操作,它确保数据库结构与我们的应用程序中定义的模型保持一致。Django通过迁移(migrations)的方式,自动跟踪模型的改动,并将这些改动应用到...
在Django应用的`models.py`文件中定义数据模型,这将映射到达梦数据库的表结构。利用Django的ORM(对象关系映射)进行数据库操作。 7. **数据库迁移**: 运行`python manage.py makemigrations`生成迁移文件,...
"Django模型与数据库"这个主题是Django核心概念中的关键部分,主要涉及如何通过Django来设计、操作和管理数据库。在这个主题中,我们将深入探讨Django模型的定义、数据库操作以及与数据库的交互方式。 首先,Django...
在Python的Web开发领域,Django框架以其高效、安全和易于...在实际项目中,你可能需要处理更复杂的业务逻辑,如分页、过滤、排序等,但这些基本操作是Django数据库交互的基础。记得在学习过程中不断实践,以加深理解。
from django.db import models # Create your models here. # 一对一关系:数据库中两个表中数据的对应关系 # 一个账户对应着一个联系人,而一个联系人有一个账户 # 一对一关系是通过在两个表之间定义相同的主键来...
在Python的Web开发框架Django中,模型是与数据库交互的核心组件。模型定义了数据的结构,包括字段、类型和关系。本章我们将深入探讨Django的模型与数据库的使用,特别是结合MySQL数据库的应用。 首先,Django模型是...
- **models.py**:定义数据模型,与数据库交互。 - **forms.py**:处理HTML表单,包括数据验证和表单生成。 - **templates**文件夹:存放HTML模板,与views.py中的函数配合,动态生成网页。 - **admin.py**:...
这个教程将带你深入了解Django的基本操作,包括安装、项目创建、应用构建、数据库交互以及视图和模板的使用。让我们一一探讨这些关键知识点。 **一、安装Django** 在开始之前,确保你已经安装了Python。然后,通过...
本篇文章将详细讲解如何利用Django的数据库内省(Introspection)工具,通过已有的数据表名动态创建Django Models对象,以便快速地与数据库进行交互。 首先,Django的数据库内省工具是其ORM(Object-Relational ...
默认情况下,Django将模型字段的值作为明文存储在数据库中。为了加密这些字段,我们需要自定义字段类,或者使用已有的第三方库。 luojilab-django-mirage-field-5d96836是一个这样的库,它提供了一种简单的方法来...
总结一下,这个实例展示了如何在Django中连接MySQL数据库,创建模型,同步数据库,定义视图,设置URL路由,以及在模板中显示数据。这个过程是Django进行数据驱动开发的基础,可以帮助你构建复杂的数据展示和交互功能...
**Django PostgreSQL数据库驱动详解** 在Python的Web开发框架Django中,PostgreSQL是一种常用的高性能关系型数据库。PostgreSQL以其强大的功能、稳定性以及对复杂查询的良好支持,深受开发者喜爱。而将Django与...
这个过程涵盖了使用Python Django框架与MySQL数据库交互的基本步骤,包括模型定义、数据库配置、视图函数创建、HTML表单以及URL路由。对于初学者或有一定基础的开发者来说,这是一个很好的实践项目,有助于理解Web...
在Django模型中,我们可以创建一个公共模型基类,包含这个标识符字段,然后让其他模型继承这个基类。 例如: ```python from django.db import models class TenantMixin(models.Model): tenant_id = models....
- 在 `myblog/app/models.py` 文件中,创建 BlogPost 模型,包括标题(title)、内容(content)、作者(author)等字段。 - 运行 `python manage.py makemigrations` 和 `python manage.py migrate` 命令,为模型...
在这个“Django官方文档中文翻译(models部分)”中,我们将会深入探讨Django的核心组件之一——模型(Models),它是数据层的核心,用于定义数据库结构和业务逻辑。 一、模型(Models)基础 1. 定义模型:模型是...
- `models.py`:定义数据库模型。 - `views.py`:处理HTTP请求,与视图逻辑相关。 - `urls.py`:定义URL路由,连接视图函数和前端页面。 - `settings.py`:项目配置,包括数据库连接、中间件、应用设置等。 - `...
在这个例子中,Djongo会自动处理将Django模型转换为MongoDB的文档,并在数据库中创建对应的集合。 在处理查询时,Django的QuerySet API仍然适用,但要注意某些SQL特性可能不适用于MongoDB,因为它们具有不同的查询...
3. **创建数据库表**:运行Django的数据库迁移命令,以根据你的应用模型创建表: ``` python manage.py makemigrations python manage.py migrate ``` 接下来,我们讨论Django中的文件上传功能。Django提供了...
6. **models.py**:数据库模型,定义应用程序的数据结构。 7. **static** 和 **media** 目录:分别用于存放静态资源(如CSS、JavaScript)和用户上传的媒体文件。 8. **templates** 目录:包含HTML模板,用于渲染...