我爱Django框架之Django数据库操作与图书管理系统简易版(你想要的这都
有)
Django数据库操作与图书管理系统
Django连接数据库
安装MySQL驱动
·当你要使⽤Django框架来操作MySQL时,底层还是通过Python操作实现的,因此要想⽤Django框架来操作MySQL时,⾸先必须要安装数据库驱动程序
·常见MySQL驱动:
·MySQLdb
是对C语⾔操作MySQL数据库的简单封装,遵循了Python DB API v2,但是只⽀持Python2,⽬前还不⽀持Python3 mysqlclient
·是MySQL-python的另外⼀个分⽀,⽀持Python3并且修复了⼀些bug
pymysql
·纯Python实现的⼀个驱动,因为是纯Python编写的,因此执⾏效率不如MySQL-python,但是可以和Python代码⽆缝衔接mysql-connector
·MySQL官⽅推出的使⽤纯Python连接MySQL的驱动,同样效率不⾼
·这⾥我们选择mysqlclient驱动,直接使⽤命令pip install mysqlclient即可安装,如安装出错可能是以下情况造成:
·(1)使⽤国内⽹安装,下载速度过慢导致安装失败
解决⽅案:换源安装驱动,参考这篇⽂章即可解决
·(1)pip版本较低导致安装失败
解决⽅案:使⽤命令:python -m pip install --upgrade pip来升级pip版本即可解决
Django配置数据库连接
Django⽀持MySQL 5.6及更⾼版本,同时推荐使⽤mysqlclient作为数据库引擎
·(1)新建项⽬Django_demo_db
·(2)在项⽬⽬录下的settings.py⽂件进⾏数据库配置
·配置如下:
# 数据库配置默认使⽤⼤写
DATABASES ={
'default':{
'ENGINE':'django.sql',# 将数据库改为MySQL 默认为Django⾃带的sqlite3
'NAME':'django_demo1',# 数据库名称
'HOST':'127.0.0.1',# 本地地址默认为127.0.0.1
'PORT':3306,# 端⼝号 MySQL默认端⼝为3306
'USER':'root',# ⽤户名⾃⼰设置的
'PASSWORD':'root'# ⽤户密码⾃⼰设置
recursive函数}
}
·在启动项⽬前,需要先开启MySQL服务,可以通过系统服务、命令⾏开启,也可以使⽤集成⼯具如PHPStudy开启,前提是已将安装MySQL或者使⽤PHPStudy安装,然后可以使⽤Navicat、SQLYog等数据库可视化⼯具操作MySQL数据库
python教材下载
注意
·如果你对上述安装过程有疑问或者没有上述安装包,可在博⽂下留⾔,博主第⼀时间看到会回复并免费发送以上⽂件
·在这⾥我们使⽤SQLYog这个可视化⼯具来操作MySQL数据库
·开启服务后需要在SQLYog中创建⼀个名为django_demo1的数据库,同时执⾏python manage.py migrate映射数据库,完成后即可在SQLYog中参看
创建数据库:
使⽤命令映射数据库后查看SQLYog:
·显然,已经将Django⾃带的系统表映射到了数据库中,这是Django为了实现⼀些默认的业务逻辑⽽建⽴的,同时说明连接数据库已经成功
原⽣SQL操作数据库
·Django中操作数据库有两种⽅式:
第⼀种⽅式就是使⽤原⽣SQL语句操作,第⼆种就是使⽤ORM模型来操作。
·在Django中使⽤原⽣SQL语句操作其实就是使⽤Python DB API的接⼝来操作的
·如果你使⽤的MySQL驱动是pymysql,就是使⽤pymysql来操作的
音创linux系统下载·Django将数据库连接已经封装好了,只要在settings.py⽂件中配置好数据库连接信息后,即可直接使⽤Django封装好的接⼝操作数据库
·创建表book,如下:
CREATE TABLE `book` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`price` float(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
·也可以使⽤可视化⼯具SQLYog创建:
·通过命令插⼊两条数据:
insert into book values(null,'Python',88),(null,'Java',99);
·新建名为book的app,book下的views.py⽂件如下:
from django.http import HttpResponse
from django.db import connection
def index(request):
# 获取对象
cursor = connection.cursor()
# 执⾏SQL语句
# 获取1条数据
data = cursor.fetchone()
print(data)
# 获取多条数据
data = cursor.fetchall()
print(data)
return HttpResponse('图书⾸页')
theoretically(1,'Python',88.0)
((2,'Java',99.0),)
重构和代码整洁之道该看哪个由控制台打印看看出:
·在获取⼀条数据时,返回⼀个元组
·获取所有数据时,返回由元组组成的元组,⼀个元组代表⼀条数据
·execute()、fetchone()和fetchall()⽅法都是Python DB API规范中定义好的,任何使⽤Python来操作MySQL的驱动程序都应该遵循该规范,因为不管是使⽤pymysql或者是mysqlclient或者是mysqldb驱动,接⼝都是⼀样的
·Python DB API规范下cursor对象常⽤接⼝如下:
操作含义
description 如果cursor执⾏了SQL语句,那么执⾏cursor.description属性会返回⼀个列表,这个列表中装的是元组,元组中装的分别是(name,type_code,display_size,internal_size,precision,scale,null_ok),其中name代表的是查出来的数据的字段名称
rowcount代表的是在执⾏了SQL语句后受影响的⾏数close关闭游标,关闭游标以后就再也不能使⽤了,否则会抛出异常
操作含义
execute(sql[,parameters])执⾏SQL语句,还可以根据需要传递参数,定义parameters属性即可fetchone在执⾏了查询操作以后,获取第⼀条数据
fetchmany(size)在执⾏查询操作以后,获取多条数据,具体是多少条要看传的size参数,如果不传size参数,那么默认是获取第⼀条数据fetchall获取所有满⾜sql语句的数据
·测试上述操作如下:
from django.http import HttpResponse
from django.db import connection
def index(request):
# 获取游标对象
cursor = connection.cursor()
# 执⾏SQL语句
# 获取1条数据
data = cursor.fetchone()
print(data)
# 获取多条数据
data = cursor.fetchall()
print(data)
wcount)
return HttpResponse('图书⾸页')
(1,'Python',88.0)
((2,'Java',99.0),)
2
案例:图书馆系统(Django简易版)
·使⽤原⽣SQL⽅式实现⼀个图书管理系统,完成图书的增删查和前端页⾯展⽰
图书⾸页
·book下的views.py视图⽂件如下:
from django.shortcuts import render
from django.db import connection
def index(request):
cursor = connection.cursor()
books = cursor.fetchall()
context ={
'books': books
springboot属于什么语言}
return render(request,'index.html', context=context)
·book下新建urls.py路由⽂件:
from django.urls import path
from.import views
urlpatterns =[
path('', views.index, name='index')
]
·项⽬⽬录下的urls.py⽂件如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。