一、数据插入
1、对应数据库插入数据,可以插入完全重复的数据
数据库名.objects.create(参数,参数...)
实例如下:
>>> from bbs.models import Student
>>> Student.objects.create(name="张三",sex="男",age=18)
<Student: 张三,男,18>
可以插入与原有数据库数据完全相同的数据
>>> from bbs.models import Student
>>> Student.objects.create(name="张三",sex="男",age=18)
<Student: 张三,男,18>
>>> Student.objects.create(name="张三",sex="男",age=18)
<Student: 张三,男,18>
2、 只能插入数据库没有的数据,不能插入完全重复的数据
数据库名.objects.get_or_create(参数,参数...)
实例如下:
>>> from bbs.models import Student
>>> Student.objects.get_or_create(name='李四',sex='女',age=17)
(<Student: 李四,女,17>, True)
下面插入完全重复的数据:
>>> Student.objects.get_or_create(name='李四',sex='女',age=17)
(<Student: 李四,女,17>, False)
可以看到如果数据库中已经存在了的数据,如果使用get_or_create方法的话,是不会再往数据库插入完全相同的数据的
3、先创建一个数据库对象,然后再保存对象,可以完成数据插入
abc=数据库名(参数,参数....)
abc.save()
实例如下:
>>> s1=Student(name='张光',sex='男',age=19)
>>> s1.save()
4、首先建立对象,然后给各个字段属性添加值,然后再保存
abc=数据库名()
abc.字段名1=xxx
abc.字段名2=xxx
abc.save()
实例如下:
>>> s2=Student()
>>> s2.name='李俊'
>>> s2.sex='男'
>>> s2.age=16
>>> s2.save()
二、数据查询
1、单行数据查询
数据库名.objects.get(参数=xxx,参数=xxx...)作为条件语句进行查询,如果查询的数据有多条,此时就会出现异常,所以查询条件必须要给的足够精确
实例如下:
>>> Student.objects.get(name='张光')
<Student: 张光,男,19>
如果有多条记录会报错,查询张三这个数据,数据库记录中有两条
>>> Student.objects.get(name='张三')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "D:\Python3.6\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "D:\Python3.6\lib\site-packages\django\db\models\query.py", line 384, in get
(self.model._meta.object_name, num)
bbs.models.MultipleObjectsReturned: get() returned more than one Student -- it returned 2!
2、所有数据查询
数据库名.objects.all()
实例如下:
>>> Student.objects.all()
<QuerySet [<Student: 张三,男,18>, <Student: 张三,男,18>, <Student: 李四,女,17>, <Student: 张光,男,19>, <Student: 李俊,男,16>]>
3、 查询并筛选数据
数据库名.objects.filter(参数=xxx)作为条件语句进行查询,数据有多条都可以查询出来
实例如下:
>>> Student.objects.filter(name='张三')
<QuerySet [<Student: 张三,男,18>, <Student: 张三,男,18>]>
4、查询并筛选数据不区分大小写
数据库名.objects.filter(参数__iexact=xxx),xxx若是英文,则不会区别大小写都会检索出来
实例如下:
>>> Student.objects.create(name='Jack',sex='男',age=19)
<Student: Jack,男,19>
>>> Student.objects.create(name='jACK',sex='男',age=17)
<Student: jACK,男,17>
>>> Student.objects.filter(name__iexact='jack')
<QuerySet [<Student: Jack,男,19>, <Student: jACK,男,17>]>
5、查询并筛选数据包含内容
数据库名.objects.filter(参数__contains=xxx),可以查询到包含xxx内容的数据
实例如下:
>>> Student.objects.filter(name__contains='张')
<QuerySet [<Student: 张三,男,18>, <Student: 张三,男,18>, <Student: 张光,男,19>]>
6、查询并筛选数据包含且不区分大小写
数据库名.objects.filter(参数_icontains=xxx),可以查询到包含xxx不区分大小写的数据
实例如下:
>>> Student.objects.filter(name__icontains='j')
<QuerySet [<Student: Jack,男,19>, <Student: jACK,男,17>]>
7、查询并筛选数据利用正则表达式
数据库名.objects.filter(参数__regex=xxx),xxx为正则表达式,可以查询到匹配模式的数据
实例如下:
>>> Student.objects.filter(name__regex='^张')
<QuerySet [<Student: 张三,男,18>, <Student: 张三,男,18>, <Student: 张光,男,19>]>
8、查询并筛选数据利用排除法查询
数据库名.objects.exclude(参数),将不满足条件的数据获取出来
实例如下:
>>> Student.objects.exclude(name__regex='^张')
<QuerySet [<Student: 李四,女,17>, <Student: 李俊,男,16>, <Student: Jack,男,19>, <Student: jACK,男,17>]>
9、查询并筛选数据先查询出数据然后再排除一部分数据
数据库名.objects.filter(参数).exclude(参数)
实例如下:
>>> Student.objects.filter(name__regex='^张').exclude(name__regex='三$')
<QuerySet [<Student: 张光,男,19>]>
三、数据更新
1、更新单条数据:先得到一个查询数据的对象,然后在更改,更改后保存
s1=数据库名.objects.get(参数)
s1.字段名=xxx
s1.save()
实例如下:
>>> s3=Student.objects.get(name='李四')
>>> s3.name='刘四名'
>>> s3.save()
2、 更新多条数据:先查询多条数据信息,然后使用update进行修改
数据库名.objects.filter(参数=xxx).update(参数=xxx,参数=xxx...)
实例如下:
>>> Student.objects.filter(name='张三').update(name='张三三')
2
四、数据删除
1、指定数据删除
数据库名.objects.filter(参数=xxx).delete()
实例如下:
>>> Student.objects.filter(name='张三三').delete()
(2, {'bbs.Student': 2})
2、所有数据删除
数据库名.objects.all().delete()
实例如下:
>>> Student.objects.all().delete()
(5, {'bbs.Student': 5})