Django学习(2)数据宝库
数据库是一所大宝库,藏着各种宝贝。一个没有数据库的网站,功能有限。在Django中,支持的数据库有以下四种:
- SQLite3
- MySQL
- PostgreSQL
- Oracle
其中SQLite3为Django自带数据库,无需安装。Django要求MySQL版本4.0或更高。
本文将介绍如何在Django中连接并操作MySQL.请确保你的系统里已安装MySQL以及Python模块pymysql.
首先新建项目Book,并在Book项目中新建应用books:
django-admin.py startproject Book
cd ./Book
django-admin.py startapp books
其中Book文件夹的树形结构如下图:

在settings.py中添加app:
并修改数据库连接方式为MySQL:
其中,ENGINE连接方式为MySQL。NAME为数据库名称,我们这里选择Book,前提是你的MySQL中已经创建好Book数据库。USER和PASSWORD为MySQL的用户名和密码。HOST和PORT分别选择本地连接和3306.
这样我们已经连接好MySQL的Book数据库,接下来需要创建表格。这可以在books的models.py中定义,代码如下:
from django.db import models class MYBOOK(models.Model):
name = models.CharField(max_length=200)
price = models.FloatField() def __str__(self):
return self.name+':'+str(self.price)
在上述模型中,我们定义了name和price字段,并用str()函数返回name:price的形式。接着我们需要将Django中的模型与MySQL数据库连接:

以上表明Django中的模型与MySQL数据库连接完成。我们可以去MySQL中查看:
其中books_mybook是模型生成的表格,是张空表格。那么该如何操作该表格呢?Django已经帮我们想好办法了,一种是利用shell命令行,一种是在books文件夹的views.py中操作。
首先我们先尝试用shell命令行模式,只需输入以下命令行:
python3 manage.py shell
进入IPython后进行以下操作:
In [1]: from books.models import MYBOOK In [2]: MYBOOK.objects.create(name="Dive into Python", price=50.5)
Out[2]: <MYBOOK: Dive into Python:50.5> In [3]: MYBOOK.objects.create(name="Dive into Scala", price=48.6)
Out[3]: <MYBOOK: Dive into Scala:48.6> In [4]: MYBOOK.objects.create(name="Dive into Java", price=67.4)
Out[4]: <MYBOOK: Dive into Java:67.4> In [5]: MYBOOK.objects.all()
Out[5]: [<MYBOOK: Dive into Python:50.5>, <MYBOOK: Dive into Scala:48.6>, <MYBOOK: Dive into Java:67.4>]
Django用类的实例表示表格的记录,所以需要导入MYBOOK类。MYBOOK.objects.create(name="Dive into Python", price=50.5)表示增加一条记录,MYBOOK.objects.all()则返回所有记录。我们可以去看看这时MySQL中的情况:
books_mybook确实已增加了三条记录!!!关于更多的操作数据库的命令可以参考:https://docs.djangoproject.com/en/2.0/topics/db/queries/。
第二种方法是在books文件夹的views.py中操作,代码如下:
from django.shortcuts import render
from books.models import MYBOOK
from django.http import HttpResponse def insert_and_show(request):
#insert records into table using three methods
MYBOOK.objects.create(name="Learning Scrapy",price=30)
p = {'name':"Linux Shell", 'price':25}
MYBOOK.objects.create(**p)
q = MYBOOK(name='Learning Pyspark', price=20)
q.save()
#show the records in webpage
book_list = MYBOOK.objects.all()
string = "TABLE MYBOOK:<br/>"
for _ in book_list:
string += str(_)+'<br/><br/>' return HttpResponse(string)
该代码前半部分用三种方式插入数据,后半部分则是为了在网页中显示。
在urls.py中增加新的url
启动server服务:
python3 manage.py runserver
在网页中输入http://localhost:8000/book/,输出的内容如下:
这表明我们增加记录成功,并且也正确地在web页面显示了!!!
最后,我们再去MySQL中查看:
这样我们就完成了用views.py操作MySQL啦~~
当然,更多的内容大家可以参考Django的官方文档哦~~
本次分享到此结束,欢迎大家交流~~
参考文献:
- Python 快速教程(Django02):庄园疑云:http://python.jobbole.com/82786/
- Django 模型(数据库):https://code.ziqiangxuetang.com/django/django-models.html
- Django官方文档:https://docs.djangoproject.com/en/2.0/
- Django详解之models操作:http://www.mamicode.com/info-detail-1504351.html
- Django_中文教程.pdf:http://download.csdn.net/download/huangzhichang13/8177581
Django学习(2)数据宝库的更多相关文章
- django学习之- 数据缓存
5种配置:开发调试 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎内存CA ...
- django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能
1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...
- Django学习(4)表单,让数据库更美好
表单,在HTML中的标签为<form></form>,在网页中主要负责数据采集功能.我们在浏览网站时,常常会碰到注册账号.账号登录等,这就是表单的典型应用. 在Django学习 ...
- Django 学习笔记之四 QuerySet常用方法
QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...
- Django 学习笔记之三 数据库输入数据
假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...
- Django学习笔记(五)—— 表单
疯狂的暑假学习之 Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path ...
- Django学习笔记(三)—— 型号 model
疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...
- django学习之Model(二)
继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.m ...
- Django 学习笔记(五)模板标签
关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...
- Django 学习笔记(七)数据库基本操作(增查改删)
一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...
随机推荐
- Java基础笔记10
类的设计分析: 1.根据需求抽取属性.(名词几乎都是属性) 2.属性私有化(private) 3.生成setter和getter方法 4.可以根据需要添加构造函数. 5.根据需求抽取其他方法.(动词几 ...
- 异步API
整合到一起,作为参考: //2 5 3 4 1 //2 5 3 1 4 var img = new Image(); img.src = '.'; img.onerror = function() { ...
- HTML5网站大观:15个精美的 HTML5 单页网站作品欣赏
HTML5 是现在Web开发领域的热点,更多的开发人员开始使用HTML5来开发交互性强.效果出众的Web应用和游戏.今天,本文收集了15个精美的 HTML5 单页网站作品,让大家感受一下 HTML5 ...
- 在找一份相对完整的Webpack项目配置指南么?这里有
Webpack已经出来很久了,相关的文章也有很多,然而比较完整的例子却不是很多,让很多新手不知如何下脚,下脚了又遍地坑 说实话,官方文档是蛮乱的,而且有些还是错的错的..很多配置问题只有爬过坑才知道 ...
- 浅谈MES系统SMT的JIT功能(一):JIT原理
前段时间帮忙客户实现了MES系统的SMT线上的JIT功能(JIT功能只适合电子行业的生产线),今天就来谈谈JIT功能是什么,为什么工厂车间需要用到JIT等等一些经验 首先说说JIT: 准时制生产方式( ...
- C++雾中风景1:友元类与面向对象
因为后续准备入职的公司都希望能转C++,所以最近也是按部就班的开始进行C++的学习.然后这个系列的文章打算探究C++的语言特性,也比较一下不同语言(如Java,Scala,Python,Go)之间的设 ...
- 结合GET(),POST()实现一个简单、完整的服务器
复习一下: 基础模块 作用 fs fs模块用于对系统文件及目录进行读写操作 http 创建服务器.e.g.http.createServer(); queryString 把url带的参数串转化为数组 ...
- js中的break,continue和return到底怎么用?
为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...
- [转载] 理解OAuth 2.0
转载自http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛 ...
- [转载] Java实现生产者消费者问题
转载自http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费 ...