Django中modles数据库数据增删改查操作(Django的python shell模式)

一、数据插入

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})

猜你喜欢

转载自blog.csdn.net/BearStarX/article/details/84980436