Django 学习笔记(七)数据库基本操作(增查改删)
来源:互联网 发布:铁塔基础设计软件 编辑:程序博客网 时间:2024/06/05 09:58
一、前期准备工作,创建数据库以及数据表,详情点击《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命令。
解决办法是将下面三行代码写上,其中MySQL1是项目的名称,在本文中项目名称是MySQL1。
import
os,django
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE"
,
"MySQL1.settings"
)
django.setup()
三、添加数据
1.第一种方式,创建类的实例对象,修改对象的属性,保存。
In [
1
]:
from
blog.models
import
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.db
import
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
})
- Django 学习笔记(七)数据库基本操作(增查改删)
- Django 学习笔记(七)数据库基本操作(增查改删)
- Django 学习笔记(七)数据库基本操作(增查改删)
- Django学习笔记(四)Django使用操作数据库
- Django框架学习笔记(9.ORM基本操作)
- 数据库学习笔记(七)
- 数据库学习笔记(七)
- Django学习笔记(三)Django使用admin管理界面来操作mysql数据库
- django数据库基本操作-增删改查(tip)-基本
- Django学习笔记(七)
- Django 学习笔记(七)
- django 数据库基本操作
- Django学习笔记3-数据库操作
- SQLite学习笔记(4)-数据库基本操作
- java-mysql数据库基本操作学习笔记(1)
- thinkphp5.0学习(七):数据库操作
- Django学习笔记5-玩转API-Django数据库操作
- Django数据库操作笔记
- ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
- Apache+jk实现tomcat负载均衡
- python的random模块函数分析(一)
- 【前端】Github Pages 与域名关联简明教程
- 我们在提供api或微服务时,通常借助openresty nginx进行流量转发或者添加一些规则或功能,
- Django 学习笔记(七)数据库基本操作(增查改删)
- android长图框架
- Android MediaPlayer框架分析
- 以太坊挖矿软件反抽水-eth 免抽水破解收费小插件 (完美兼容 Claymore 原版内核,长沙矿工,圣骑士,中国矿工,ETH 超级矿工)
- Android Sensor HAL层分析
- FTPrep, 49 Anagram
- mysql开启允许远程连接
- 线程实现方法
- Java线程池原理及几种线程池类型介绍