数据库是一所大宝库,藏着各类宝贝。一个没有数据库的网站,功能有限。在Django中,支持的数据库有如下四种:html
其中SQLite3为Django自带数据库,无需安装。Django要求MySQL版本4.0或更高。
本文将介绍如何在Django中链接并操做MySQL.请确保你的系统里已安装MySQL以及Python模块pymysql.
首先新建项目Book,并在Book项目中新建应用books:python
django-admin.py startproject Book cd ./Book django-admin.py startapp books
其中Book文件夹的树形结构以下图:mysql
在settings.py中添加app:web
并修改数据库链接方式为MySQL:sql
其中,ENGINE链接方式为MySQL。NAME为数据库名称,咱们这里选择Book,前提是你的MySQL中已经建立好Book数据库。USER和PASSWORD为MySQL的用户名和密码。HOST和PORT分别选择本地链接和3306.
这样咱们已经链接好MySQL的Book数据库,接下来须要建立表格。这能够在books的models.py中定义,代码以下:shell
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数据库链接:数据库
以上代表Django中的模型与MySQL数据库链接完成。咱们能够去MySQL中查看:django
其中books_mybook是模型生成的表格,是张空表格。那么该如何操做该表格呢?Django已经帮咱们想好办法了,一种是利用shell命令行,一种是在books文件夹的views.py中操做。
首先咱们先尝试用shell命令行模式,只需输入如下命令行:app
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 8000
在网页中输入http://localhost:8000/book/,输出的内容以下:
这代表咱们增长记录成功,而且也正确地在web页面显示了!!!
最后,咱们再去MySQL中查看:
这样咱们就完成了用views.py操做MySQL啦~~
固然,更多的内容你们能够参考Django的官方文档哦~~
本次分享到此结束,欢迎你们交流~~
参考文献: