42.MySQL数据库安装,及驱动程序选择
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 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语句的数据。
始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。