11.数据库操做

 

MySQL驱动程序安装:

咱们使用Django来操做MySQL,实际上底层仍是经过Python来操做的。所以咱们想要用Django来操做MySQL,首先仍是须要安装一个驱动程序。在Python3中,驱动程序有多种选择。好比有pymysql以及mysqlclient等。这里咱们就使用mysqlclient来操做。mysqlclient安装很是简单。只须要经过pip install mysqlclient便可安装。javascript

常见MySQL驱动介绍:html

  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开发的。效率不高。

Django配置链接数据库:

在操做数据库以前,首先先要链接数据库。这里咱们以配置MySQL为例来说解。Django链接数据库,不须要单独的建立一个链接对象。只须要在settings.py文件中作好数据库相关的配置就能够了。示例代码以下:java

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

在Django中操做数据库:

在Django中操做数据库有两种方式。第一种方式就是使用原生sql语句操做,第二种就是使用ORM模型来操做。这节课首先来说下第一种。python

在Django中使用原生sql语句操做其实就是使用python db api的接口来操做。若是你的mysql驱动使用的是pymysql,那么你就是使用pymysql来操做的,只不过Django将数据库链接的这一部分封装好了,咱们只要在settings.py中配置好了数据库链接信息后直接使用Django封装好的接口就能够操做了。示例代码以下:mysql

# 使用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,他们的接口都是同样的。更多规范请参考:https://www.python.org/dev/peps/pep-0249/ios

Python DB API下规范下cursor对象经常使用接口:

  1. description:若是cursor执行了查询的sql代码。那么读取cursor.description属性的时候,将返回一个列表,这个列表中装的是元组,元组中装的分别是(name,type_code,display_size,internal_size,precision,scale,null_ok),其中name表明的是查找出来的数据的字段名称,其余参数暂时用处不大。web

  2. rowcount:表明的是在执行了sql语句后受影响的行数。sql

  3. close:关闭游标。关闭游标之后就不再能使用了,不然会抛出异常。数据库

  4. execute(sql[,parameters]):执行某个sql语句。若是在执行sql语句的时候还须要传递参数,那么能够传给parameters参数。示例代码以下:django

    cursor.execute("select * from article where id=%s",(1,))
  5. fetchone:在执行了查询操做之后,获取第一条数据。

  6. fetchmany(size):在执行查询操做之后,获取多条数据。具体是多少条要看传的size参数。若是不传size参数,那么默认是获取第一条数据。

  7. fetchall:获取全部知足sql语句的数据。

相关文章
相关标签/搜索