官网中的示例代码
flask init-db
- 结果是 `Error: No such command “init-db”.
- 那是因为init-db 已经被
flask db init
给代替了
运行
flask db init
报错
Usage: flask db init [OPTIONS]
Error: Failed to find Flask application or factory in module "app". Use "FLASK_APP=app:name to specify one.
- 原因是你的项目中没找到 app.py 文件,不能确认你这个项目是flask项目
- 我这里是因为我把 app.py 重命名为 manage.py 了
- 解决方案
- 指定manage.py = app.py ,让flask 能够找到
set FLASK_APP=manage.py flask db init
- 这样就能解决了
- 指定manage.py = app.py ,让flask 能够找到
运行
flask db migrate
报错
- SQLALCHEMY_DATABASE_URI 和 SQLALCHEMY_TRACK_MODIFICATIONS 配置错误
d:\programfiles\anaconda3\envs\netdevops\lib\site-packages\flask_sqlalchemy\__init__.py:774: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI t
o "sqlite:///:memory:".
'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. '
d:\programfiles\anaconda3\envs\netdevops\lib\site-packages\flask_sqlalchemy\__init__.py:794: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by defaul
t in the future. Set it to True or False to suppress this warning.
-
问题解决
- 该报错意思是,
SQLALCHEMY_DATABASE_URI 和SQLALCHEMY_TRACK_MODIFICATIONS
这两项都是必须的,不可以省略 - 需要查看设置中有么有没有这两项
- 如果设置中已经设置了,请查看设置是不是在配置数据库之前,顺序很重要
# 1. 导入配置 app.config.from_object(Config) # 2. 配置数据库 db = SQLALCHEMY(app) migrate = Migrate(app)
- 该报错意思是,
-
mysql 1366 VARIABLE_VALUE incorrect
d:\programfiles\anaconda3\envs\netdevops\lib\site-packages\sqlalchemy\engine\default.py:552:
Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...'
for column 'VARIABLE_VALUE' at ro
w 484")
- 问题解决
- 配置mysql 时候没有配置连接引擎,就会报该错误
- 解决方案如下
# 报错写法 SQLALCHEMY_DATABASE_URI = "mysql://root:root@127.0.0.1:3306/mydb" # 正确写法 SQLALCHEMY_DATABASE_URI = "mysq+mysqlconnector://root:root@127.0.0.1:3306/mydb"
- 关于引擎可以选择,pymysql 和 mysqlconnector 两种
- 查看更多关于数据库配置