准备工作

MySQL软件

本书使用的数据库是目前最新的 MySQL 8.0 版本,读者在学习后续内容之前,要先下载和安装好该软件。关于 MySQL 软件的使用方法不在本书的讲解范围内,如果读者对 MySQL 的下载和安装有疑问,可以参考以下两个链接。

Python操作MySQL驱动

Flask 要操作数据库,必须要先安装 Python 操作 MySQL 的驱动。在 Python 中,目前有以下 MySQL 驱动包。

  • MySQL-python:也就是 MySQLdb,是对 C 语言操作 MySQL 数据库的一个简单封装,遵循了 Python DB API v2,但是只支持 Python2。

  • mysqlclient:是 MySQL-python 的另外一个分支。支持 Python3 并且修复了一些 bug,是目前为止执行效率最高的驱动,但是安装的时候容易因为环境问题出错。

  • pymysql:纯 Python 实现的一个驱动。因为是纯 Python 编写的,因此执行效率不如 mysqlclient 高。也正因为是纯 Python 写的,所以可以和 Python 代码无缝衔接。

  • mysql-connector-python: MySQL 官方推出的纯 Python 连接 MySQL 的驱动,执行效率比 pymysql 还低。

为了减少读者出错,提高学习效率,本书选择使用 pymysql 作为驱动程序。读者在学完本章内容后,如果有需要,可以自行考虑移植到 mysqlclient。pymysql 是一个第三方包,因此需要通过以下命令安装。

pip install pymysql

Flask-SQLAlchemy

在 Flask 中,我们很少会使用 pymysql 直接写原生 SQL 语句去操作数据库,更多的是通过 SQLAlchemy 提供的 ORM 技术,类似于操作普通 Python 对象一样,实现对数据库的增、删、改、查操作。而 Flask-SQLAlchemy 是对 SQLAlchemy 的一个封装,这使得在 Flask 中使用 SQLAlchemy 更加方便。Flask-SQLAlchemy 需要单独安装,因为 Flask-SQLAlchemy 依赖 SQLAlchemy,所以只要安装了 Flask-SQLAlchemy,SQLAlchemy便会自动安装。安装命令如下。

pip install flask-sqlalchemy

SQLAlchemy 类似于 Jinja2,可以独立于 Flask 使用,而且完全可以在任何 Python 程序中使用。SQLAlchemy 的功能非常强大,本书不能全部都讲到,读者如果有兴趣,可以在学完本章内容后阅读 SQLAlchemy 的官方文档 https://www.sqlalchemy.org/ 进行深入研究。