2017-07-03 10 views
0

私はフラスコとピーウィーを使用してデータベースにデータを入れしようとしている、と私は次のようなエラーに遭遇している: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() 

私はこれをGoogleで検索しました。ほとんどの人にとって、 'db.create_tables()'が不足していると問題があるようです。明らかに、それは私のコードにあるので、私は本当にエラーがどこから来ているのか分からない。いくつかのアドバイスは非常に高く評価されます。この問題は、別の.pyファイルを使用して 'text'フィールドに値を設定しようとすると特に発生するようです。

答えて

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()はうまくいくようです。

データベースに書き込みを実行できない場合は、実行しようとしているディレクトリに書き込み権限があることを確認してください(この場合、作業ディレクトリになります)

関連する問題