Ошибка "нет такой таблицы"
Я пытаюсь поместить данные в базу данных, используя флягу и 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.
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
Вам нужно будет позвонить create
метод при создании нового Post
(т.е. новая строка в вашей базе данных). Кроме этого, initialize_db()
Кажется, работает просто отлично.
Если вы не можете выполнить какие-либо записи в базу данных, убедитесь, что у вас есть доступ для записи в каталог, где вы пытаетесь это сделать (в данном случае это будет ваш рабочий каталог)