MySQL驱动程序安装:
咱们使用Django来操做Mysql,实际上底层仍是经过Python来操做的,所以咱们想要使用Django来操做mysql,首先仍是须要安装一个驱动程序,在Python3中,驱动程序有多种选择。好比有pymysql以及mysqlclient等。这里咱们就是用pymysql来操做。pymysql安排很是简单,只须要经过pip install pymysql便可安装。
常见Mysql驱动程序介绍:
- MySQL-python:也就是MySQLdb,是对C语言操做MySQL数据库的一个简单封装。遵循了Python DB API v2.可是只支持Python2,目前还不支持Python3.
- mysqlclient:是mysql-python的另外一个分支。支持Python3而且修复了一个bug。
- pymysql:纯Python实现的一个驱动,由于是纯Python实现的,所以执行效率不如MySQL-python。而且也由于是纯Python编写的,所以能够和Python代码无缝链接。
- MySQL Connectot/Python:MySQL官方推出的使用纯Python链接MySQL的驱动,由于是纯Python开发的,效率不高。
在Django中操做数据库有两种方式,第一种方式就是使用原生sql语句操做,第二种就是使用ORM模型来操做。
在Django中使用原生sql语句操做其实就是使用python db api 的接口来操做,若是你的mysql驱动程序使用的是pymysql,那么你就是使用pymysql来操做的,只不过Django将数据库链接部分封装好了,咱们只要找settings.py中配置好了数据库链接信息后直接使用Django封装好的接口就能够进行操做了,示例代码以下:
以上的execute以及fetchall方法就是Python DB API规范中定义好的,任何使用Python来操做mysql的驱动程序都应该遵循这个规范。因此无论是使用pymysql或者是mysqlclient 或者是mysqldb,他们的接口都是同样的。python
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语句,若是在执行sql语句的时候还须要传递参数,那么能够传给parameters参数,示例代码以下:
- fetchone:在执行查询操做以后获取第一条数据。
- fetchmany(size):再执行查询操做以后,获取多条数据,具体的个数根据size的大小,若是不传入size参数,那么默认获取第一条数据。
- fetchall:获取全部知足sql语句的数据。