(sqlite3.OperationalError) no such table: users(关键词:Web开发/Flask/数据库/SQLite/bug)

报错信息简短版:

OperationalError: (sqlite3.OperationalError) no such table: users

报错信息完整版:

(venv_flask_henry) henry@henry-virtual-machine:~/dev/flask_henry$ python manage.py shell
/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py:794: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.
  'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
u
>>> u = User(email='[email protected]', username='john', password='cat')
>>> db.session.add(u)
>>> db.session.commit()
Traceback (most recent call last):
  File "", line 1, in 
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/scoping.py", line 157, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 921, in commit
    self.transaction.commit()
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 461, in commit
    self._prepare_impl()
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 441, in _prepare_impl
    self.session.flush()
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 2192, in flush
    self._flush(objects)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 2312, in _flush
    transaction.rollback(_capture_exception=True)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 2276, in _flush
    flush_context.execute()
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py", line 389, in execute
    rec.execute(self)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py", line 548, in execute
    uow
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
    mapper, table, insert)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py", line 835, in _emit_insert_statements
    execute(statement, params)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 945, in execute
    return meth(self, multiparams, params)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
    context)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1402, in _handle_dbapi_exception
    exc_info
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "/home/henry/dev/flask_henry/venv_flask_henry/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (sqlite3.OperationalError) no such table: users [SQL: u'INSERT INTO users (email, username, role_id, password_hash) VALUES (?, ?, ?, ?)'] [parameters: ('[email protected]', 'john', None, 'pbkdf2:sha256:50000$LCWwNeCk$aeb7ff6a9000bc72cb48378d6d0b495be60015fe49f9edd6bbe6df6642584137')]

Google搜到的:
“还没有执行数据库初始化,没有创建表吧?”

解决办法:

$ python manage.py shell
>>> db.create_all()

(参考《Flask Web开发》5.8.1 创建表,P50

参考文献:
1.db插入不了数据
2.《Flask Web开发》5.8.1 创建表,P50

你可能感兴趣的:(Web开发,Flask,bug)