Flask在连接mysql出现ImportError并且没有生成数据库中的表的问题解决

今天在跟着教程学flask在做一个管理员登录的表单提交时,在连接数据库时出现了一个问题

1
ImportError: No module named MySQLdb

因为我用的是python3.6,而MySQLdb不支持python3.6,我只能用pymysql这个模块,于是我Google了一下问题,在StackOverFlow找到了答案(我真的爱死这个网站了)。

数据库连接的语句应该是这样

1
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://.....'

于是我再次打开网站测试

1
http://127.0.0.1:5000/admin/login/

又出现了以下问题

我感觉出现这个错误应该是数据库还是没有建表成功的原因,我打开数据库查看,果然。

接下来在python shell环境下完成建表操作。

  • 首先打开cmd,执行命令进入虚拟环境,因为虚拟环境才有flask这些模块

    1
    workon movie_env1
  • 进入models.py所在文件夹,再执行命令进入python shell环境

    1
    python
  • 进入环境后,再执行命令

    1
    2
    from models import db
    db.create_all()

没报错,但是有一条警告,不管,应该成功了。

再次打开数据库看movie_flask是否为空

数据库movie_flask里面有表了,下面打开网站,随便输入一个表里面没有的名字测试。

结果显示正确,成功了。