Django 学习笔记(七)数据库基本操作(增查改删)


一、前期准备工作,创建数据库以及数据表,详情点击《Django 学习笔记(六)MySQL配置

1.创建一个项目

2.创建一个应用

3.更改settings.py

4.更改models.py

5.同步数据

 

二、安装IPython方便debug

sudo apt-get install ipython3

安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中。

Python
3.5.2+ (default, Sep 22 2016,12:18:14)
Type "copyright","credits" or "license" for more information. IPython
2.4.1 -- An enhanced Interactive Python.
?        
-> Introduction and overview of IPython's features.
%quickref-> Quick reference.help      -> Python's own help system.object?  -> Details about 'object', use 'object??' for extra details. In
[
1]:

如果直接启用Ipython3的话,也可以出现以下代码,但是由于没有定位在那个位置,将会出现ImproperlyConfigured错误。原因是直接启动Ipython交互解释器,没有设置Django的环境变量DJANGO_SETTINGS_MODULE,添加上环境变量即可运行,所以还是推荐直接运行Python manage.py shell命令。

 ImproperlyConfigured

解决办法是将下面三行代码写上,其中MySQL1是项目的名称,在本文中项目名称是MySQL1。

import os,djangoos.environ.setdefault("DJANGO_SETTINGS_MODULE","MySQL1.settings")django.setup()

  

三、添加数据

1.第一种方式,创建类的实例对象,修改对象的属性,保存。

In
[
1]:from blog.modelsimport Person
 In
[
2]: p1=Person()
 In
[
3]: p1.name='Lee'
 In
[
4]: p1.save()

2.第二种方式,直接在类实例化的时候,构造方法直接给予字段属性,保存。

In
[
5]: p2=Person(name='Kein')
 In
[
6]: p2.save()

3.第三种方法,调用类管理器中的create方法。

In
[
7]: p3=Person.objects.create(name='KeinLee')

MySQL数据库内容:

 

四、查询数据

1.查询全部

In
[
8]: Person.objects.all()
Out[8]: <QuerySet [<Person: Lee>, <Person: Kein>, <Person: KeinLee>]>

如果出现全部都是Person: Person Object ,请在blog/models.py中添加__str__,返回字符方法。

from django.dbimport models class Person(models.Model):    name= models.CharField(max_length=10)         def __str__(self):        return self.name

2.查询特定条件,filter相当于=,exclude相当于!=,get直接得出对象而不是QuerySet对象。

In
[
9]: Person.objects.filter(name='Lee')
Out[9]: <QuerySet [<Person: Lee>]> In
[
10]: Person.objects.exclude(name='Lee')
Out[10]: <QuerySet [<Person: Kein>, <Person: KeinLee>]> In
[
11]: Person.objects.get(name='Lee')
Out[11]: <Person: Lee>

  

五、修改数据

在查询数据的基础上修改,一个是filter修改,另一个是get修改,这两种方法是不一样的,因为查询结果的对象不一样。

In
[
12]: Person.objects.filter(name='Kein').update(name='Ben')
Out[12]:1 In
[
13]: p=Person.objects.get(name='Lee')
 In
[
14]: p.name='Alen'
 In
[
15]: p.save()

  

六、删除数据

删除数据就直接在查询数据的基础上加一个.delete()即可。

In
[
16]: Person.objects.get(name='Lee').delete()
Out[16]: (1, {'blog.Person':1}) In
[
17]: Person.objects.filter(name='Kein').delete()
Out[17]: (1, {'blog.Person':1}) In
[
18]: Person.objects.exclude(name='Lee').delete()
Out[18]: (1, {'blog.Person':1})
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告