参考:http://djangobook.py3k.cn/2.0/
一、ORM:单表操作
映射关系:
python的类名对应的SQL语句的表名
python的类属性对应的SQL语句的表名下的字段
python的类属性的约束对应的SQL语句的表名下的字段类型
类的实例对象---------------表中的一条记录对象
第一步:创建表
class Student(models.Model):
nid=models.AutoField(primary_key=True) # 主键约束
name=models.CharField(max_length=32) # 字符串字段
birth=models.DateField() # 日期类型
class_id=models.IntegerField(default=0)
第二步:单表操作:
查询记录API:
(1)Student.objects.all() #返回的QuerySet类型 查询所有记录 [obj1,obj2....]
(2)Student.objects.filter() #返回的QuerySet类型 查询所有符合条件的记录
(3)Student.objects.exclude()#返回的QuerySet类型 查询所有不符合条件的记录
(4)Student.objects.get() #返回的models对象 查询结果必须有且只有一个,否则报错
(5)Student.objects.all().first() #返回的models对象 查询结果集合中的第一个
(6)Student.objects.filter().last() #返回的models对象 查询结果集合中的最后一个
(7)Student.objects.all().values("name","class_id") #返回的QuerySet类型 ,列表中存放的字典
(8)Student.objects.all().values_list("name","class_id") #返回的QuerySet类型 ,列表中存放的元组
(9)Student.objects.all().order_by("class_id") # 按指定字段排序,不指定,按主键排序
(10)Student.objects.all().count() # 返回的记录个数
(11)Student.objects.all().values("name").distinct()
(12)Student.objects.all().exist()
单表查询之双下划线 __
Student.objects.filter()
models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
models.Tb1.objects.filter(name__contains="ven")
models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
models.Tb1.objects.filter(id__range=[1, 2]) # 范围bettwen and
startswith,istartswith, endswith, iendswith
添加记录:
方式1:
s=Student(name='',birth='',class_id='')
s.save()
方式2:
stu_obj=Student.objects.create(name='',birth='',class_id='') # stu_obj是添加的记录对象
删除记录:
Student.objects.filter(nid=1).delete() # QuerySet类型调用
修改记录:
Student.objects.filter(nid=1).update(name="yuan")