数据库是一所大宝库,藏着各种宝贝。一个没有数据库的网站,功能有限。在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的官方文档哦~~
  本次分享到此结束,欢迎大家交流~~


参考文献:

  1. Python 快速教程(Django02):庄园疑云:http://python.jobbole.com/82786/
  2. Django 模型(数据库):https://code.ziqiangxuetang.com/django/django-models.html
  3. Django官方文档:https://docs.djangoproject.com/en/2.0/
  4. Django详解之models操作:http://www.mamicode.com/info-detail-1504351.html
  5. Django_中文教程.pdf:http://download.csdn.net/download/huangzhichang13/8177581

Django学习(2)数据宝库的更多相关文章

  1. django学习之- 数据缓存

    5种配置:开发调试 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎内存CA ...

  2. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

  3. Django学习(4)表单,让数据库更美好

    表单,在HTML中的标签为<form></form>,在网页中主要负责数据采集功能.我们在浏览网站时,常常会碰到注册账号.账号登录等,这就是表单的典型应用. 在Django学习 ...

  4. Django 学习笔记之四 QuerySet常用方法

    QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...

  5. Django 学习笔记之三 数据库输入数据

    假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...

  6. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  7. Django学习笔记(三)—— 型号 model

    疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...

  8. django学习之Model(二)

    继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.m ...

  9. Django 学习笔记(五)模板标签

    关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...

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

    一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...

随机推荐

  1. WebUploader在谷歌浏览器中反应缓慢迟钝

    修改  初始化webuploader的 js accept: { title: 'Images', extensions: 'jpg,jpeg,png', mimeTypes: 'image/*' } ...

  2. LeetCode 532. K-diff Pairs in an Array (在数组中相差k的配对)

    Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in t ...

  3. Robot Framework自动化测试框架初探

    Robot Framework是一款python语言编写,通用的功能自动化测试框架.它使用了比较易用的表格数据语法,基于关键字驱动测试,主要用来验收测试和验收测试驱动开发(ATDD). 本文主要介绍R ...

  4. 走进 Xamarin Test Recorder for Xamarin.Forms

    此篇是承接之前 走进 UITest for Xamarin.Forms 的,所以如果没有看过之前的可以先看下之前的 UITest 比起上一篇纯敲代码只适合程序员的 UITest ,这一篇不管是程序员还 ...

  5. celery rabbit mq 详解

    Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...

  6. vb.net 代码建立控件,并显示在窗体上

    Dim lb As New Label        lb.Text = "hello"        lb.Top = 200        lb.Left = 100      ...

  7. Idea报错Check $M2_HOME environment variable and mvn script match.

    -Dmaven.multiModuleProjectDirectory=$M2_HOME

  8. CentOS6.9中挂载NTFS移动硬盘

    公司需要本地备份,不占用公网带宽,而本地服务器硬盘容量不够,所以需要将本地服务器centos 6.9系统的备份数据拷贝到移动硬盘. 所以需要在centos上挂载NTFS格式的移动硬盘. 方法/步骤: ...

  9. 【Aladdin Unity3D Shader编程】之一 基本入门

    OpenGL.DirectX以及GLSL.HLSL.CG OpenGL和DirectX是图像应用编程接口,用于渲染二维或者三维图形. GLSL着色语言是用来在OpenGL中着色编程的语言,有点在于跨平 ...

  10. linux-cp

    cp 更改时间: 2017-10-26 - 21:00:54 cp:用来复制文件或者目录的命令,当源文件与目标文件名字相同的时候,当cp 没有参数,源文件会覆盖目标文件 参数 -p:保留源文件或者目录 ...