• 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文件夹的树形结构如下图:

    Book文件夹的树形结构

      在settings.py中添加app:

    添加app
      并修改数据库连接方式为MySQL:

    数据库连接方式
    其中,ENGINE连接方式为MySQL。NAME为数据库名称,我们这里选择Book,前提是你的MySQL中已经创建好Book数据库。USER和PASSWORD为MySQL的用户名和密码。HOST和PORT分别选择本地连接和3306.
      这样我们已经连接好MySQL的Book数据库,接下来需要创建表格。这可以在books的models.py中定义,代码如下:

    1 from django.db import models
    2 
    3 class MYBOOK(models.Model):
    4     name = models.CharField(max_length=200)
    5     price = models.FloatField()
    6 
    7     def __str__(self):
    8        return self.name+':'+str(self.price)

    在上述模型中,我们定义了name和price字段,并用str()函数返回name:price的形式。接着我们需要将Django中的模型与MySQL数据库连接:

    python3 manage.py makemigrations

    python3 manage.py migrate
    以上表明Django中的模型与MySQL数据库连接完成。我们可以去MySQL中查看:

    MySQL查看books_mybook表格查看books_mybook表格其中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表格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

    新增url
      启动server服务:

    python3 manage.py runserver 8000

      在网页中输入http://localhost:8000/book/,输出的内容如下:

    网页展示这表明我们增加记录成功,并且也正确地在web页面显示了!!!
      最后,我们再去MySQL中查看:

    查看books_mybook表格
    这样我们就完成了用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
  • 相关阅读:
    memcache 基本操作
    PHP 实现定时任务的几种方法
    PDO 事务处理
    mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by
    ASP.NET Web API 跨域访问(CORS)
    nmap使用
    买定离手,落子无悔
    html5plus处理返回键
    PAT 1008 数组元素循环右移问题
    PAT 1007 素数对猜想
  • 原文地址:https://www.cnblogs.com/jclian91/p/8021772.html
Copyright © 2020-2023  润新知