Ошибка "нет такой таблицы"

Я пытаюсь поместить данные в базу данных, используя флягу и 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() Кажется, работает просто отлично.

Если вы не можете выполнить какие-либо записи в базу данных, убедитесь, что у вас есть доступ для записи в каталог, где вы пытаетесь это сделать (в данном случае это будет ваш рабочий каталог)

Другие вопросы по тегам