django使用mysql原始语句,Django中使用mysql数据库并使用原生sql语句操作

Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库。

准备的软件

mysql数据库,版本5.7及以上。

navicat,(可选的)。使用navicat主要是简化我们对数据库的操作。没有也一样。

安装mysql驱动程序。

常见的驱动程序:

a. MySQL-python:也就是MySQLdb,是对c语言操作数据库的一个简单封装。遵循了Python DB API v2,但是只支持python2,目前还不支持python3.

b. mysqlclient:是MySQL-python的另外一个分支,支持python3并且修复了一些bug。(分支就是在原来的基础上做了一些修改,但本质上还是MySQL-python。最大的一个改动就是可以支持python3。)

c. pymysql:纯python实现的一个驱动,因为是纯python编写的,因此效率不如MySQL-python,并且也是因为是纯python编写的,因此可以和python无缝衔接。

d. MySQL Connecter/Python:MySQL官方推出的使用纯python连接MySQL的驱动。因为是纯python开发的,效率也不高,但能无缝衔接。

还有很多就不介绍了。

因为我使用的时python3,所以我使用的是mysqlclient。

安装驱动的方式:

pip install mysqlclient

Django中连接MySQL数据库

在项目中的settings.py文件中,修改DATABASES这个字典中的数据:

原来的代码为

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

修改为

DATABASES = {

'default': {

#数据库引擎

'ENGINE': 'django.db.backends.mysql',

#数据库的名字

'NAME': 'test',

#连接数据库的用户名

'USER': 'root',

#连接数据库的密码(下载mysql时配置的密码)

'PASSWORD': 'root',

#数据库的主机地址

'HOST':'127.0.0.1',

#数据库的端口号,默认为3306,也可以不写这一行代码

'PORT':'3306'

}

}

这样就能连接到数据库了,就能对数据库进行操作了。

在Django中操作数据库

在Django中操作数据库的方式有两种,第一种就是使用原生sql语句操作,第二种就是使用ORM模型来操作。

原生sql语句操作数据库

首先使用navicat连接了mysql数据库,新建一个test的数据库。然后在test中新建一个book的表,有三个值id(主键,自动增长),name,author。

如果没有navicat的就是用sql语句创建上述信息。

新建一个项目,配置好settings.py中的信息并且能连接上数据库,在settings.py的同级目录下新建一个views.py的文件,templates文件夹下新建一个index.html的文件。

views.py中写入:

from django.shortcuts import render

#导入`connection`

from django.db import connection

def index(request):

cursor = connection.cursor()

#要想使用sql原生语句,必须用到execute()函数

#然后在里面写入sql原生语句

cursor.execute("insert into book(id,name,author) values (null ,'三国演义','罗贯中')")

return render(request,'index.html')

urls.py中写入:

from . import views

from django.urls import path

urlpatterns = [

path('', views.index),

]

输入网址,在网页中我们看不到任何信息,是因为我们没有编写html文件,但是已经执行了views.index中的代码。刷新数据库可以看到

8be2685f141dbf07bc5ede2f725e123a.png

信息已经插入进去了。

我们也可以查询数据库里面的数据,修改index函数:

def index(request):

cursor = connection.cursor()

#cursor.execute("insert into book(id,name,author) values (null ,'三国演义','罗贯中')")

cursor.execute("select * from book")

#使用一个变量来接收查询到的数据,

#fetchall()返回查询到的所有数据

rows = cursor.fetchall()

for row in rows:

print(row)

return render(request,'index.html')

然后我们再刷新网页,在控制台就能看到从数据库中查询到的信息了。

当然还可以执行删除,修改等操作,只需要修改execute()中sql语句就行了。

ORM模型

https://blog.csdn.net/xujin0/article/details/83550487

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值