当前位置: 首页 > 工具软件 > Beerus-DB > 使用案例 >

flask 运行 flask db init 报错,init-db 命令找不到

司马英才
2023-12-01

官网中的示例代码

  • 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
  • 解决方案
    1. 指定manage.py = app.py ,让flask 能够找到
      	set FLASK_APP=manage.py
      	flask db init 
      
    2. 这样就能解决了

运行 flask db migrate 报错

  1. 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.  
  1. 问题解决

    1. 该报错意思是,SQLALCHEMY_DATABASE_URI 和SQLALCHEMY_TRACK_MODIFICATIONS 这两项都是必须的,不可以省略
    2. 需要查看设置中有么有没有这两项
    3. 如果设置中已经设置了,请查看设置是不是在配置数据库之前,顺序很重要
    	# 1. 导入配置
    	app.config.from_object(Config)
    	# 2. 配置数据库
    	db = SQLALCHEMY(app)
    	migrate = Migrate(app)
    
  2. 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")
  1. 问题解决
    1. 配置mysql 时候没有配置连接引擎,就会报该错误
    2. 解决方案如下
    	# 报错写法
    	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"
    
    1. 关于引擎可以选择,pymysql 和 mysqlconnector 两种
  2. 查看更多关于数据库配置
 类似资料: