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中的代码。刷新数据库可以看到

信息已经插入进去了。

我们也可以查询数据库里面的数据,修改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

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

  1. 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...

    在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...

  2. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作

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

  3. php执行删除语句代码,ThinkPHP之数据删除和执行原生SQL语句

    一.数据删除 delete() 返回受影响的记录条数 $goods->delete(30);//删除主键值等于30的记录信息 $goods->delete('10,12,14');//删除 ...

  4. mysql删除重复sql_mysql中删除完全重复数据的准确SQL语句

    删除数据库中重复的记录,只保留一条 DELETE FROM tb_gps_records WHERE id NOT IN (SELECT bid FROM (SELECT min(id) as bid ...

  5. pdo插入mysql数据出错_php中通过pdo插入数据时,sql语句错误?

    再次先谢谢各位大佬!! 接下来直接看代码: include 'mysql_ini.php'; $sql_select = "select * from word where word = ? ...

  6. Mysql --concat(),concat_ws(),group_concat()用法详解(原生sql语句)

    sqlalchemy用法,参考:https://blog.csdn.net/gymaisyl/article/details/96578119 concat(), concat_ws()用法 现有一个 ...

  7. django 使用原生SQL语句反向生成MODELS.PY中的表结构

    在一次工作中,有这么一个问题,就是要导入的数据字段不确定,但是还想使用django的ORM来对数据进行操作.. 琢磨了许久,弄个不完善的方案,但功能是能实现的,主要是思路.废话不多说了,丑陋的展示一下 ...

  8. django执行原生SQL语句

    1.原生SQL用法概述 django可以执行原生SQL语句,主要分读和写两类,用法如下: 读(查):xxxModel.object.raw() 写(增删改):connection.cursor() 2 ...

  9. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

最新文章

  1. 作为程序员,这些地方不知道就out了!
  2. Windows Phone 7 开发资源汇总
  3. 直播 | 同源共流:一个优化框架统一与解释图神经网络
  4. 快醒醒,一大波最新 AI 论文加开源代码来袭!
  5. python——闭包与闭包中修改外部变量
  6. layui设置radio
  7. Oracle SQL中的!=与
  8. 完全卸载sql2005
  9. visualvm连接服务器jvm进行监控
  10. FutureTask的get()方法之异常处理
  11. Python把类当做字典来访问
  12. java多线程--容器类和其他工具类
  13. 计算机蓝屏原因原理,蓝屏炸弹
  14. APICloud的config.xml应用配置的说明
  15. oc引导windows蓝屏_使用Opencore引导ubuntu以及Linux的步骤
  16. 清空IE缓存-也就是清除掉IE临时文件夹
  17. 关于Redis数据库
  18. K40自动重启的分析(RTC)
  19. 关于CPU 和 GPU
  20. 中文文字检测及识别(ORC)

热门文章

  1. C++开发即时通讯软件,需要注意什么?
  2. FreeEIM 在盛大的开幕仪式结束之后
  3. 如果Windows 8的销售没有预期那么好
  4. 談JS面向對象【靜態與非靜態類】
  5. C语言程序设计基础讲座之指针的慨念
  6. 想加入IT行业为何建议你学Python,学完真值!
  7. 程序员和女教师相亲,晒出每月教师公积金,大家惊呼: 比我工资都高
  8. 年薪50W不是梦,100天掌握BAT前端中高级工程师必备技能
  9. 为什么Alpha多样性的输入数据会是它?
  10. HTML中用弹性布局设置位置,HTML的flex弹性布局