【问题标题】:peewee 'no such table' errorpeewee '没有这样的表' 错误
【发布时间】:2017-12-06 20:54:17
【问题描述】:

我正在尝试使用flask和peewee将数据放入数据库中,我遇到了以下错误:peewee.OperationalError: no such table: post

我的 models.py 文件如下:

from peewee import *
import datetime

db = SqliteDatabase('posts.db') #create database to interact with

#create a class for blogposts
class Post(Model):
    id = PrimaryKeyField()
    date = DateTimeField(default = datetime.datetime.now)
    title = CharField()
    text = TextField()

    class Meta:
        database = db

def initialize_db():
    db.connect()
    db.create_tables([Post], safe = True)
    db.close()

我已经用谷歌搜索过了,对于大多数人来说,缺少 'db.create_tables()' 似乎是问题所在。显然,它在我的代码中,所以我真的不确定错误来自哪里。一些建议将不胜感激。当我尝试使用另一个 .py 文件填充“文本”字段时,问题似乎特别出现。

【问题讨论】:

    标签: python flask peewee flask-peewee


    【解决方案1】:

    我将您的代码修改为以下 sn-p,它适用于我:

    from peewee import *
    import datetime
    
    db = SqliteDatabase('posts.db') #create database to interact with
    
    #create a class for blogposts
    class Post(Model):
        id = PrimaryKeyField()
        date = DateTimeField(default = datetime.datetime.now)
        title = CharField()
        text = TextField()
    
        class Meta:
            database = db
    
    def initialize_db():
        db.connect()
        db.create_tables([Post], safe = True)
        db.close()
    
    initialize_db() #if db tables are not created, create them
    post = Post.create(id=4, title="Some title", text="some text1") #add a new row
    post.save() #persist it to db, not necessarily needed
    

    在创建新的Post(即数据库中的新行)时,您需要调用create 方法。除此之外,initialize_db() 似乎工作得很好。

    如果您无法对数据库执行任何写入,请确保您在尝试执行该操作的目录中具有写入权限(在这种情况下,它将是您的工作目录)

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 2023-03-08
      • 2018-06-21
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多