首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flask数据库迁移抛出"AttributeError: can't set attribute“

flask数据库迁移抛出"AttributeError: can't set attribute“
EN

Stack Overflow用户
提问于 2021-03-18 18:27:01
回答 1查看 235关注 0票数 0

我正在学习flask mega教程,我目前正在尝试运行"flask db migrate“命令,但我得到了一些错误,我不确定我是否愚蠢地看到了它,但它并不是真的指向我的任何文件。

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/moe/cryptowatch/venv/bin/flask", line 8, in <module>
    sys.exit(main())
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask/cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask/cli.py", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_migrate/cli.py", line 91, in migrate
    _migrate(directory, message, sql, head, splice, branch_label, version_path,
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_migrate/__init__.py", line 96, in wrapped
    f(*args, **kwargs)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_migrate/__init__.py", line 210, in migrate
    command.revision(config, message, autogenerate=True, sql=sql,
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/alembic/command.py", line 212, in revision
    script_directory.run_env()
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/alembic/script/base.py", line 490, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 97, in load_python_file
    module = load_module_py(module_id, path)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/alembic/util/compat.py", line 182, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "migrations/env.py", line 25, in <module>
    str(current_app.extensions['migrate'].db.engine.url).replace('%', '%%'))
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 943, in engine
    return self.get_engine()
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 962, in get_engine
    return connector.get_engine()
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 555, in get_engine
    options = self.get_options(sa_url, echo)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 570, in get_options
    self._sa.apply_driver_hacks(self._app, sa_url, options)
  File "/home/moe/cryptowatch/venv/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 914, in apply_driver_hacks
    sa_url.database = os.path.join(app.root_path, sa_url.database)
AttributeError: can't set attribute
EN

回答 1

Stack Overflow用户

发布于 2021-03-18 19:34:00

有关详细信息,请参阅this thread。如果您有1.4.0版的sqlalchemy,请卸载它,然后安装以前的版本。

如果你的代码是正确的,那么问题就解决了。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66689190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档