基于db的Flask-SQLAlchemy wtform

Brozjak2

我的应用程序正在我的主 PC 上运行。我试图将应用程序克隆到我的笔记本电脑(我尝试在 PC 上的不同目录中对其进行初始化,但问题是相同的,因此问题不在于笔记本电脑),并且在使用flask db init的 db 初始化数据库时出现以下错误:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: race [SQL: 'SELECT race.id AS race_id, race.name AS race_name \nFROM race'] (Background on this error at: http://sqlalche.me/e/e3q8)

我想要做的是在我的一种形式中包含一个 wtforms,RadioField其中包含基于db 中种族表的选择因此,对于该表中的每一行,我都希望在选择中做出一个选择。表单的重要部分如下所示:

class RegistrationForm(FlaskForm):
    race = RadioField('Race', validators=[InputRequired('Choose a race.')],
                      choices=races, coerce=int)

并且种族变量在这样的形式之外(在形式本身之前):

with create_app().app_context():
    races = [(race.id, race.name.capitalize()) for race in Race.query.all()]

我认为最后一行是调用堆栈中的问题:

Traceback (most recent call last):
  File "/home/dareon4/workspace/test/venv/bin/flask", line 11, in <module>
    sys.exit(main())
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/flask/cli.py", line 894, in main
    cli.main(args=args, prog_name=name)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/flask/cli.py", line 557, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/flask/cli.py", line 411, in decorator
    with __ctx.ensure_object(ScriptInfo).load_app().app_context():
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/flask/cli.py", line 372, in load_app
    app = locate_app(self, import_name, name)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/flask/cli.py", line 235, in locate_app
    __import__(module_name)
  File "/home/dareon4/workspace/test/shapes.py", line 5, in <module>
    app = create_app()
  File "/home/dareon4/workspace/test/app/__init__.py", line 43, in create_app
    from app.blueprints.auth import bp as auth_bp
  File "/home/dareon4/workspace/test/app/blueprints/auth/__init__.py", line 7, in <module>
    from . import routes
  File "/home/dareon4/workspace/test/app/blueprints/auth/routes.py", line 13, in <module>
    from .forms import LoginForm, RegistrationForm, ResetPasswordRequestForm, \
  File "/home/dareon4/workspace/test/app/blueprints/auth/forms.py", line 19, in <module>
    races = [(race.id, race.name.capitalize()) for race in Race.query.all()]
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/orm/query.py", line 2836, in all
    return list(self)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/orm/query.py", line 2988, in __iter__
    return self._execute_and_instances(context)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/orm/query.py", line 3011, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
    return meth(self, multiparams, params)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
    context)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
    exc_info
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
    raise value.with_traceback(tb)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
    context)
  File "/home/dareon4/workspace/test/venv/lib64/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: race [SQL: 'SELECT race.id AS race_id, race.name AS race_name \nFROM race'] (Background on this error at: http://sqlalche.me/e/e3q8)

所以问题是我在运行flask db init命令时没有初始化数据库,并且一行需要数据库存在。这可能没有解决方案,因此我不是在问如何更正此实现,而是在问如何正确执行以根据数据库中的行生成表单。我没有数百场比赛,所以我可以对它们进行硬编码,但我想这样做。

Brozjak2

因此,经过一些谷歌搜索后,我发现您可以RadioField在视图中动态添加选项,如下所示:

@bp.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm()
    form.race.choices = [(race.id, race.name.capitalize()) for race in Race.query.all()]

这正是我正在寻找的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Flask:使用带有关系的SQLalchemy模型填充WTform

来自分类Dev

使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

来自分类Dev

如何使用SQLALCHEMY将flask-WTForm的输入输出到html

来自分类Dev

将 SQLAlchemy AppenderBaseQuery 对象中的元素返回到 Flask-WTForm 字段

来自分类Dev

预填充Flask-WTForm IntegerField

来自分类Dev

预填充Flask-WTForm IntegerField

来自分类Dev

使用MongoEngine和Flask创建WTForm时发生TypeError

来自分类Dev

Flask-WTForm-将表单保存到数据库

来自分类Dev

使用Flask-Principal角色填充WTForm MultiCheckboxField

来自分类Dev

使用Flask-Principal角色填充WTForm MultiCheckboxField

来自分类Dev

引导数据源问题,包括flask / wtform

来自分类Dev

带db模型的循环导入的flask sqlalchemy

来自分类Dev

带有Flask和SqlAlchemy的基于Django的基于日期的存档

来自分类Dev

flask-wtf使用wtform表单构造函数编辑模型:预先填写表单

来自分类Dev

Flask-WTForm-以NoneType而不是String的形式获取表单数据

来自分类Dev

flask-wtf使用wtform表单构造函数编辑模型:预先填写表单

来自分类Dev

尝试访问所有数据时,Flask WTForm 数据返回 csrf_token

来自分类Dev

设置多对多sqlalchemy flask app sqlite db的插入顺序

来自分类Dev

db无法在html中循环-python,sqlalchemy,flask

来自分类Dev

Flask和SQLAlchemy db.session.commit无法正常工作

来自分类Dev

我避免多个flask-sqlalchemy db条目的方法

来自分类Dev

Flask SQLAlchemy分页错误

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

Flask-SQLAlchemy TimeoutError

来自分类Dev

Flask/SQLAlchemy Insert Into Database

来自分类Dev

Flask + SqlAlchemy ALTER表

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

无法安装Flask SQLAlchemy

来自分类Dev

WTForm FormField填充值

Related 相关文章

  1. 1

    Flask:使用带有关系的SQLalchemy模型填充WTform

  2. 2

    使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

  3. 3

    如何使用SQLALCHEMY将flask-WTForm的输入输出到html

  4. 4

    将 SQLAlchemy AppenderBaseQuery 对象中的元素返回到 Flask-WTForm 字段

  5. 5

    预填充Flask-WTForm IntegerField

  6. 6

    预填充Flask-WTForm IntegerField

  7. 7

    使用MongoEngine和Flask创建WTForm时发生TypeError

  8. 8

    Flask-WTForm-将表单保存到数据库

  9. 9

    使用Flask-Principal角色填充WTForm MultiCheckboxField

  10. 10

    使用Flask-Principal角色填充WTForm MultiCheckboxField

  11. 11

    引导数据源问题,包括flask / wtform

  12. 12

    带db模型的循环导入的flask sqlalchemy

  13. 13

    带有Flask和SqlAlchemy的基于Django的基于日期的存档

  14. 14

    flask-wtf使用wtform表单构造函数编辑模型:预先填写表单

  15. 15

    Flask-WTForm-以NoneType而不是String的形式获取表单数据

  16. 16

    flask-wtf使用wtform表单构造函数编辑模型:预先填写表单

  17. 17

    尝试访问所有数据时,Flask WTForm 数据返回 csrf_token

  18. 18

    设置多对多sqlalchemy flask app sqlite db的插入顺序

  19. 19

    db无法在html中循环-python,sqlalchemy,flask

  20. 20

    Flask和SQLAlchemy db.session.commit无法正常工作

  21. 21

    我避免多个flask-sqlalchemy db条目的方法

  22. 22

    Flask SQLAlchemy分页错误

  23. 23

    Flask SQLAlchemy关系

  24. 24

    Flask-SQLAlchemy TimeoutError

  25. 25

    Flask/SQLAlchemy Insert Into Database

  26. 26

    Flask + SqlAlchemy ALTER表

  27. 27

    Flask SQLAlchemy关系

  28. 28

    无法安装Flask SQLAlchemy

  29. 29

    WTForm FormField填充值

热门标签

归档