2017-07-03 111 views
0

我试图把数据放入烧瓶使用和peewee的数据库,我也遇到了以下错误:peewee.OperationalError: no such table: postpeewee“没有这样的表”错误

我的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文件填充“文本”字段时,问题似乎就会出现。

回答

1

我适应你的代码下面的代码片段,它为我的作品:

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()似乎工作得很好。

如果你无法在数据库上执行任何写操作,确保你有在你正在尝试做的是,目录的写权限(在这种情况下,这将是你的工作目录)