peewee 'no such table' 错误
peewee 'no such table' error
我正在尝试使用 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 文件填充 'text' 字段时,问题似乎特别出现。
我将您的代码改编成以下代码段,它对我有用:
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()
似乎工作正常。
如果您无法对数据库执行任何写入操作,请确保您在尝试执行此操作的目录中具有写入权限(在这种情况下,它将是您的工作目录)
我正在尝试使用 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 文件填充 'text' 字段时,问题似乎特别出现。
我将您的代码改编成以下代码段,它对我有用:
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()
似乎工作正常。
如果您无法对数据库执行任何写入操作,请确保您在尝试执行此操作的目录中具有写入权限(在这种情况下,它将是您的工作目录)