【问题标题】:peewee.OperationalError: table gist has no column named namepeewee.OperationalError:表 gist 没有名为 name 的列
【发布时间】:2016-12-18 02:01:00
【问题描述】:

当看起来没有问题时,我的代码中不断出现此错误。我在 Flask 中使用 Peewee 和 SQLite。

这是我的代码。

from peewee import *

import datetime

DB = SqliteDatabase("gist.db")

class Gist(Model):
    name = CharField()
    content = TextField()
    description = TextField()
    join_date = DateTimeField(default=datetime.datetime.now)

    class Meta:
       database = DB

def initialize():
    DB.connect()
    DB.create_tables([Gist], safe=True)
    DB.close()

下面是创建实例的代码:

@app.route("/", methods=("GET", "POST"))
def index():
    form = forms.GistForm()
    if form.validate_on_submit():
        models.Gist.create(name=form.name.data,
                           content=form.content.data,
                           description=form.description.data)
        flash("Message posted! Thanks!", "success")
    return render_template("index.html", form=form)

感谢您提供的任何帮助!

编辑:有兴趣的人可以使用 Stacktrace

Traceback (most recent call last):
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1403, in handle_exc
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1477, in full_dispa
    rv = self.handle_user_exception(e)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1381, in handle_use
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1475, in full_dispa
    rv = self.dispatch_request()
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1461, in dispatch_r
    return self.view_functions[rule.endpoint](**req.view_args)
  File "B:\Sites\GistClone\app.py", line 21, in index
    description=form.description.data)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 4494, in create
    inst.save(force_insert=True)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 4680, in save
    pk_from_cursor = self.insert(**field_dict).execute()
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 3213, in execute
    cursor = self._execute()
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 2628, in _execute
    return self.database.execute_sql(sql, params, self.require_commit)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 3461, in execute_sql
    self.commit()
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 3285, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 127, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python35-32\lib\site-packages\peewee.py", line 3454, in execute_sql
    cursor.execute(sql, params or ())
peewee.OperationalError: table gist has no column named name

【问题讨论】:

  • 请同时发布堆栈跟踪。
  • 完成。 @Jean-FrançoisFabre

标签: python sqlite flask peewee


【解决方案1】:

我遇到了同样的错误,并通过删除数据库 .db 文件(在您的情况下为“gist.db”)来修复它。

如果在创建数据库文件后,您修改或添加了任何模型字段,则 peewee 无法识别原始数据库中的修改和/或新字段并抛出此错误。删除旧的 .db 文件后,将在启动时重新创建具有最新字段的新文件,这为我解决了问题。

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多