专栏首页小海怪python学习Django学习-第六讲(上):Django数据库原生的方法操作

Django学习-第六讲(上):Django数据库原生的方法操作

1.MySql 驱动程序安装

我们使用Django来操作MySQL,实际上底层还是通过Python来操作的。因此我们想要用Django来操作MySQL,首先还是需要安装一个驱动程序。在Python3中,驱动程序有多种选择。比如有pymysql以及mysqlclient等。这里我们就使用mysqlclient来操作。mysqlclient安装非常简单。只需要通过 pip install mysqlclient 即可安装。如果安装失败,我们可以到 离线的python库的网站中找到我们需要的相对应的版本,下载下来,然后再pip安装。

离线安装包网址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
如有不能直接pip的话,可以到这个网站上找到相应的包。

注意:django要求的mysql 版本为 5.7的,低于5.7的话不能使用ORM

常见MySQL驱动介绍:

    1. MySQL-python:也就是MySQLdb。是对C语言操作MySQL数据库的一个简单封装。遵循了Python DB API v2 但是只支持Python2,目前还不支持Python3。
  • 2.mysqlclient:是MySQL-python的另外一个分支。支持Python3 并且修复了一些bug。
  • 3.pymysql:纯Python实现的一个驱动。因为是纯Python编写的,因此执行效率不如MySQL-python。并且也因为是纯Python编写的,因此可以和Python代码无缝衔接。
  • 4 . MySQL Connector/Python:MySQL官方推出的使用纯Python连接MySQL的驱动。因为是纯Python开发的。效率不高。

2.Django配置连接数据库

在操作数据库之前,首先先要连接数据库。这里我们以配置MySQL为例来讲解。Django连接数据库,不需要单独的创建一个连接对象。只需要在settings.py文件中做好数据库相关的配置就可以了

DATABASES = {
    'default': {
        # 数据库引擎(是mysql还是oracle等)
        'ENGINE': 'django.db.backends.mysql',
        # 数据库的名字
        'NAME': 'logic',
        # 连接mysql数据库的用户名
        'USER': 'root',
        # 连接mysql数据库的密码
        'PASSWORD': 'root',
        # mysql数据库的主机地址
        'HOST': '127.0.0.1',
        # mysql数据库的端口号
        'PORT': '3306',
    }
}

连接Linux服务器MySQL问题:https://blog.csdn.net/qq473179304/article/details/56665364

3.在Django中操作数据库

  • 在Django中操作数据库有两种方式。第一种方式就是使用原生sql语句操作,第二种就是使用ORM模型来操作。
  • 在Django中使用原生sql语句操作其实就是使用python db api的接口来操作。如果你的mysql驱动使用的是pymysql,那么你就是使用pymysql来操作的,只不过Django将数据库连接的这一部分封装好了,我们只要在settings.py中配置好了数据库连接信息后直接使用Django封装好的接口就可以操作了,引入 django中的 connection
# 使用django封装好的connection对象,会自动读取settings.py中数据库的配置信息
from django.db import connection

# 获取游标对象
cursor = connection.cursor()
# 拿到游标对象后执行sql语句
cursor.execute("select * from book")
# 获取所有的数据
rows = cursor.fetchall()
# 遍历查询到的数据
for row in rows:
    print(row)

以上的execute以及fetchall方法都是Python DB API规范中定义好的。任何使用Python来操作MySQL的驱动程序都应该遵循这个规范。所以不管是使用pymysql或者是mysqlclient或者是mysqldb,他们的接口都是一样的。

4.Python DB API下规范下cursor对象常用接口

    1. description:如果cursor执行了查询的sql代码。那么读取cursor.description属性的时候,将返回一个列表,这个列表中装的是元组,元组中装的分别是(name,type_code,display_size,internal_size,precision,scale,null_ok),其中name代表的是查找出来的数据的字段名称,其他参数暂时用处不大。
  • 2.rowcount:代表的是在执行了sql语句后受影响的行数。
  • 3.close:关闭游标。关闭游标以后就再也不能使用了,否则会抛出异常。

-4. execute(sql[,parameters]):执行某个sql语句。如果在执行sql语句的时候还需要传递参数,那么可以传给parameters参数。示例代码如下:

 cursor.execute("select * from article where id=%s",(1,))
    1. fetchone:在执行了查询操作以后,获取第一条数据。
    1. fetchmany(size):在执行查询操作以后,获取多条数据。具体是多少条要看传的size参数。如果不传size参数,那么默认是获取第一条数据。
  • 7.fetchall:获取所有满足sql语句的数据。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django学习-第三讲(下) Django 模板变量和常用标签

    模板中可以包含变量,Django在渲染模板的时候,可以传递变量对应的值过去进行替换。变量的命名规范和Python非常类似,只能是阿拉伯数字和英文字符以及下划线的...

    小海怪的互联网
  • javascript第3讲:数据类型(ES5中)

    小海怪的互联网
  • Centos6.8安装svn 并同步到web

    这些天帮朋友的云服务器配置svn,并要实现svn与web同步,昨天折腾了一天,没有没能折腾出来,不是这里报错就是那里报错了,网上找资料,测试,网上找资料,再测试...

    小海怪的互联网
  • Django入门:搭建你第一个应用

    Django是用Python编写的免费开源Web框架,用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内...

    司徒永哥
  • Windows数据库编程接口简介

    数据库是计算机中一种专门管理数据资源的系统,目前几乎所有软件都需要与数据库打交道(包括操作系统,比如Windows上的注册表其实也是一种数据库),有些软件更是以...

    Masimaro
  • FancyHeatmap,支持输出嵌入网站了!

    FancyHeatmap,是我给TBtools中“卡通式热图”命的名字。前述,在公众号上,我已经推出了这个功能相关的新手教程。在后续,我也发现有不少人已经应用:

    王诗翔呀
  • 从PostgreSql看数据库的发展

    业界一致有一位“大神”,每天都在传播POSTGRESQL 的知识,一直倡导POSTGRESQL 是可以替换ORACLE的开源数据库。从目前的掌握的知识看,部分企...

    AustinDatabases
  • MySQL Galera Cluster全解析 Part 4 Galera Cluster 安装前准备

    MySQL Galera Clusters全解析 Part 1 Galera Cluster 简介

    bsbforever
  • SQL标签库详解例子

    梦_之_旅
  • 后端的你,使用的数据库能撑起多少并发,有数吗?

    阿里巴巴的 OceanBase 数据库,性能超过 Oracle 100倍,号称世界第一。大家可还记得今年的 OB 打榜赛?

    程序员小跃

扫码关注云+社区

领取腾讯云代金券