【问题标题】:Flask sqlArchemy, html: ValueError: not enough values to unpack (expected 2, got 1)Flask sqlArchemy, html: ValueError: no enough values to unpack (expected 2, got 1)
【发布时间】:2020-11-19 17:10:36
【问题描述】:

我正在执行命令 flask migrate 在它开始运行时创建更多引用表,即使它识别了表,它也会引发以下错误。我通常很容易寻找和发现错误,但在这种情况下我不能轻易识别它。

PDT:我是编程主题的新手,感谢您的理解和时间。

主要是我需要知道错误在哪里才能纠正它,但它在这里调用的扩展并不引用我写的任何东西。谢谢

INFO  [alembic.autogenerate.compare] Detected added column 'blog_user.youtube'
Traceback (most recent call last):
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\user\appdata\local\programs\python\python38-32\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)

  File "C:\Users\user\Desktop\LLAC\env\Scripts\flask.exe\__main__.py", line 7, in <module>
  File "c:\users\user\desktop\llac\env\lib\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 "c:\users\user\desktop\llac\env\lib\site-packages\flask\cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)

  File "c:\users\user\desktop\llac\env\lib\site-packages\click\core.py", line 782, in main
    rv = self.invoke(ctx)

  File "c:\users\user\desktop\llac\env\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))

  File "c:\users\user\desktop\llac\env\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))

  File "c:\users\user\desktop\llac\env\lib\site-packages\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)

  File "c:\users\user\desktop\llac\env\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)

  File "c:\users\user\desktop\llac\env\lib\site-packages\click\decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)

  File "c:\users\user\desktop\llac\env\lib\site-packages\flask\cli.py", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)

  File "c:\users\user\desktop\llac\env\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)

  File "c:\users\user\desktop\llac\env\lib\site-packages\flask_migrate\cli.py", line 89, in migrate
    _migrate(directory, message, sql, head, splice, branch_label, version_path,

  File "c:\users\user\desktop\llac\env\lib\site-packages\flask_migrate\__init__.py", line 96, in wrapped
    f(*args, **kwargs)
  File "c:\users\user\desktop\llac\env\lib\site-packages\flask_migrate\__init__.py", line 210, in migrate
    command.revision(config, message, autogenerate=True, sql=sql,

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\command.py", line 221, in revision
    scripts = [script for script in revision_context.generate_scripts()]

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\command.py", line 221, in <listcomp>
    scripts = [script for script in revision_context.generate_scripts()]

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\api.py", line 513, in generate_scripts
    yield self._to_script(generated_revision)

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\api.py", line 425, in _to_script
    render._render_python_into_templatevars(

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 49, in _render_python_into_templatevars
    _render_cmd_body(upgrade_ops, autogen_context)

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 71, in _render_cmd_body
    lines = render_op(autogen_context, op)

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 87, in render_op
    lines = util.to_list(renderer(autogen_context, op))

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 179, in _add_table
    for rcons in [

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 180, in <listcomp>
    _render_constraint(cons, autogen_context)

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 775, in _render_constraint
    return renderer(constraint, autogen_context)

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 871, in _render_foreign_key
    "refcols": ", ".join(

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 872, in <genexpr>
    repr(_fk_colspec(f, apply_metadata_schema))

  File "c:\users\user\desktop\llac\env\lib\site-packages\alembic\autogenerate\render.py", line 808, in _fk_colspec
    tname, colname = tokens[-2:]

ValueError: not enough values to unpack (expected 2, got 1)

【问题讨论】:

  • 请贴出相关代码。没有它,就很难确定问题所在。
  • 你好兄弟这是问题我不知道要放置代码的哪一部分我必须放置所有代码。但在版本控制中,我有最后一点,一切进展顺利,所以我将添加到我实现的代码中。
  • decorators.py def admin_required(f): @wraps(f) def decorated_function(*args, **kws): is_admin = getattr(current_user, 'is_admin', False) 如果不是 is_admin: 中止(401) 返回 f(*args, **kws) 返回装饰函数
  • 请将其包含在您的原始帖子中,而不是在评论中。谢谢
  • 该错误与'blog_user.youtube' 列有关,因此我们需要查看blog_user 的代码。问题中的代码不相关。

标签: python-3.x postgresql sqlalchemy


【解决方案1】:

我遇到了同样的错误。在我的情况下,如果我删除 table_args ,错误就会消失。然后迁移工作,所以我认为它可能与 ForeignKey 约束有关。

class AccommodationAirport(db.Model):
    __tablename__ = 'accommodation_airport'
    __table_args__ = (
        ForeignKeyConstraint(
        ['supplier'], ['accommodation'],
        name='fk_acco_airp_sup_acco'
        ),
        UniqueConstraint(
            'supplier', 'accommodation', 'airport',
            name='uq_sup_acco_airp'
        )
    )
    created = db.Column(db.DateTime, server_default=func.now())
    last_modified = db.Column(db.DateTime, onupdate=func.now())
    modified_by = db.Column(db.Integer)
    supplier = db.Column(db.String(8), primary_key=True)
    accommodation = db.Column(db.String(32), primary_key=True)
    airport = db.Column(db.String(3), primary_key=True)
    

目前我找到的唯一解决方案是

  1. 用约束声明注释掉 table_args,
  2. 迁移 -> 升级
  3. 取消对 table_args 的注释
  4. 迁移 -> 升级

【讨论】:

  • 我试过了,但错误仍在继续我不知道该怎么办我已经重读了 4 天的所有内容,但它没有给我
猜你喜欢
  • 2020-10-10
  • 2017-12-23
  • 1970-01-01
  • 2020-10-26
  • 2022-07-22
  • 1970-01-01
  • 2021-10-27
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多