使用基于Python的Flask连接mysql数据库的曲折历程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z919167107/article/details/89601688

按照这里的教程进行数据库连接的操作,代码如下:

from flask_mysqldb import MySQL
app = Flask(__name__)


app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'root'
app.config['MYSQL_DB'] = 'MyDB'

mysql = MySQL(app)

,结果报出以下错误:

Traceback (most recent call last):
  File "F:\File\PythonProject\myFlaskBlog\pflask\hello.py", line 10, in <module>
    mysql=MySQL(app)
NameError: name 'MySQL' is not defined

报出该错的代码位置为:

mysql=MySQL(app)

mysql=MySQL(app)

经过查询 发现是自己的基于python环境的mysql开发包没有安装,因此首先使用pip进行安装:

安装mysql驱动包有以下几种选择:

MySQL-python:这个包包含MySQLdb模块,用C语言编写。它是MySQL最常用的Python包之一。

Mysql-connector-python:这个包包含mysql.connector模块,它完全用Python编写。

PyMydSQL:这个包包含pymysql模块,它完全用Python编写。它被设计成MySQL-python包的替代品

选择以上任意一种安装即可

在这里我使用第一个包,执行以下命令

 pip install MySQL-python

发现报错:

Collecting MySQL-python
  Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
Installing collected packages: MySQL-python
  Running setup.py install for MySQL-python ... error
    ERROR: Complete output from command 'f:\file\python\python.exe' -u -c 'import setuptools, tokenize;__file__='"'"'C:\\Users\\91916\\AppData\\Local\\Temp\\pip-install-ai73_59b\\MySQL-python\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\91916\AppData\Local\Temp\pip-record-es8ngzae\install-record.txt' --single-version-externally-managed --compile:
    ERROR: running install
    running build
    running build_py
    creating build
    creating build\lib.win32-3.7
    copying _mysql_exceptions.py -> build\lib.win32-3.7
    creating build\lib.win32-3.7\MySQLdb
    copying MySQLdb\__init__.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\converters.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\connections.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\cursors.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\release.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\times.py -> build\lib.win32-3.7\MySQLdb
    creating build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\__init__.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CR.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\ER.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FLAG.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\REFRESH.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CLIENT.py -> build\lib.win32-3.7\MySQLdb\constants
    running build_ext
    building '_mysql' extension
    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
    ----------------------------------------
ERROR: Command "'f:\file\python\python.exe' -u -c 'import setuptools, tokenize;__file__='"'"'C:\\Users\\91916\\AppData\\Local\\Temp\\pip-install-ai73_59b\\MySQL-python\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\91916\AppData\Local\Temp\pip-record-es8ngzae\install-record.txt' --single-version-externally-managed --compile" failed with error code 1 in C:\Users\91916\AppData\Local\Temp\pip-install-ai73_59b\MySQL-python\

经过查询得知MySQL-Python包只支持Python API2.0的接口,即该包仅支持python2.x,Python3.x版本需要安装mysqlclient

因为我使用的版本是python3 ,因此安装mysqlclient

在命令行中执行以下指令查看当前使用python的版本以及位数:

F:\File\PythonProject\myFlaskBlog>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

发现是32位,因此在这个网站下载对应版本以及对应位数的mysqlclient轮子,文件名称为:mysqlclient-1.4.2-cp37-cp37m-win32.whl

下载完成后将该文件放至任意一个文件夹,然后再在该文件夹中打开命令行,执行

pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl 

 得到以下结果:

F:\File\PythonProject\myFlaskBlog>pip install mysqlclient-1.4.2-cp37-cp37m-win32.whl
Processing f:\file\pythonproject\myflaskblog\mysqlclient-1.4.2-cp37-cp37m-win32.whl
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.4.2

成功安装mysqlclient

猜你喜欢

转载自blog.csdn.net/z919167107/article/details/89601688