Django学习笔记----数据库操作实例

简介: 上上篇>Django学习笔记----环境搭建基于Windows上一篇>Django学习笔记----快速入门修改settings.py配置在环境搭建篇, 我们已经安装了mysql-client包安装好后, 在settings.

上上篇>Django学习笔记----环境搭建基于Windows
上一篇>Django学习笔记----快速入门

修改settings.py配置

在环境搭建篇, 我们已经安装了mysql-client包
安装好后, 在settings.py中将代码做如下替换

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase',
    }
}
DATABASES = {
    'default': {
        # 数据库引擎名称
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'root',
        'PASSWORD':'123456',
        # 数据库名称
        'NAME':'test',
        # 数据库主机地址, 此外还可以设置端口
        'HOST':'localhost'
    }
}

在App中建立模型

在app中的models.py中建立模型类
如注释所示, 在Cmder中,依次使用
python manage.py migrate创建表结构
python manage.py makemigrations App_name
让Django在数据库中建立对应的表

class Mysite(models.Model):
    # use 'python manage.py migrate' create table Structure
    # use 'python manage.py makemigrations App_name(Not class name)'
    # let Django konw what had been changed
    title = models.CharField(max_length=100)
    url = models.URLField()
    author = models.CharField(max_length=50)
    num = models.IntegerField()

之后查看数据库, 可以看到已经建立好的表.
这里面的表不仅有刚刚建立的模型, 还有Django自己建立的表. 模型建立的表的命名格式是AppName_ModelName

表已建立

通过Django进行数据库基本操作

我们通过Djangoshell工具来演示对数据库的基本操作, 在Cmder中键入以下命令启动shell

python manage.py shell

启动后导入你建立的模型的包, 如from myTest.models import *

获取所有数据
# 相当于SELECT * FROM TABLE
In [2]: m = Mysite.objects.all()

In [3]: m
Out[3]: <QuerySet []> 
增加一条数据
In [4]: m = Mysite(title='django', num=2)

In [5]: m.save()

在前面获取数据时, 表是空的, 经过增加数据之后, 我们再查询一次

In [6]: m = Mysite.objects.all()

In [7]: m
Out[7]: <QuerySet [<Mysite: Mysite object>]>

我们将该数据取出来

In [8]: m[0].title
Out[8]: 'django'
查询数据

查询不同字段只需更换get()的字段名

# 获取单条
In [9]: m = Mysite.objects.get(num=2)

In [10]: m.title
Out[10]: 'django'

# 也可以使用Filter, 相当于SQL语句中的Where
m = Mysite.objects.filter(title='django')
修改数据

查询出来的数据可以进行更改, 选中对应的字段进行赋值并保存即可

In [25]: m.title = 'flask'

In [26]: m.save()

In [27]: m.title
Out[27]: 'flask'

也可以直接使用Update函数进行修改

# 修改单条
 Mysite.objects.filter(num=2).update(title='Google')
# 修改整列
 Mysite.objects.all.update(title='Google')
删除数据

删除数据同样简单, 删除成功后再次查询该记录就会报错. 删除数据同样可以使用前面查询数据的filter方法和all方法来实现对查询的多条结果进行删除

In [28]: m.delete()
Out[28]: (1, {'myTest.Mysite': 1})

In [29]:  m = Mysite.objects.get(num=2)
---------------------------------------------------------------------------
DoesNotExist                              Traceback (most recent call last)
<ipython-input-29-96b21651e5d5> in <module>()
----> 1 m = Mysite.objects.get(num=2)

对查询结果进行排序

# 升序排列
Mysite.objects.all().order_by("num")
# 降序排列
Mysite.objects.all().order_by("-num")

也可以在模型中设置排序

class Mysite(models.Model):
    ......
    class Meta:
        ordering = ['num']

显示数据

在查询结果中, 我们得到的是一个列表, 可以使用Python的列表的方法进行遍历, 相信大家都会的
既然结果是列表, 那么可以用切片来限制返回的结果也是在意料之内的

Mysite.objects.all()[0:2]
目录
相关文章
|
1月前
|
NoSQL Java 数据库
【问题篇】springboot项目通过数据库限制实例端口号
【问题篇】springboot项目通过数据库限制实例端口号
19 0
|
3月前
|
弹性计算 关系型数据库 MySQL
快速上手阿里云RDS MySQL实例创建,轻松管理数据库
快速上手阿里云RDS MySQL实例创建,轻松管理数据库 在数字化时代,数据已成为企业的核心资产。如何高效、安全地存储和管理这些数据,成为企业在云计算时代亟待解决的问题。阿里云的RDS(关系型数据库服务)应运而生,为用户提供稳定、可靠的云上数据库解决方案。本文将详细介绍如何通过阿里云RDS管理控制台快速创建RDS MySQL实例,让您轻松上手,快速部署数据库。
170 2
|
3月前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
49 0
|
3月前
|
关系型数据库 MySQL 数据库
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
49 0
|
3月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
86 7
|
6天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
8天前
|
关系型数据库 API 数据库
Django中的数据库事务管理:确保数据一致性
【4月更文挑战第15天】Django框架提供强大的数据库事务管理,确保ACID属性,保证数据一致性和完整性。文章深入讨论了Django事务管理,包括使用`@transaction.atomic`装饰器和`transaction.atomic()`上下文管理器手动控制事务,以及低级API进行精细管理。注意避免长时间事务、选择合适隔离级别、正确处理异常及了解数据库特性。掌握这些技巧对构建可靠Web应用至关重要。
|
11天前
|
关系型数据库 MySQL 数据库连接
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
33 11
|
1月前
|
Java 数据库
java面向对象高级分层实例_数据库操作类
java面向对象高级分层实例_数据库操作类
11 1
|
1月前
|
SQL 关系型数据库 数据库
sql如何新建数据库实例
sql如何新建数据库实例