我正在与 python 中的 peewee 作斗争。我的项目配置是Python + pyTelegramBotAPI + Sqlite3 + peewee。我的电报机器人是任务管理器(学习项目)。这是我获取可用任务的代码:
def get_most_recent_tasks(page: int) -> list:
offset = (3 * page) - 3
query = TaskModel.select().order_by(TaskModel.creation_date.desc()).limit(3).offset(offset)
most_recent_tasks = query.execute()
print(most_recent_tasks)
这是我收到的错误:
most_recent_tasks = query.execute()
^^^^^^^^^^^^^^^
peewee.OperationalError: no such table: Tasks
任何帮助表示赞赏。
如果您尚未创建该表,则可能需要创建该表。您可以编写如下代码:
db.create_tables([TaskModel, ...])
不过,问题很可能是您指定了数据库文件的相对路径,例如:
db = SqliteDatabase('filename.db')
该路径相对于您当前的工作目录,并且根据您运行机器人的方式,它可能会发生变化。更好的选择是指定完整/绝对路径:
import os
curdir = os.path.dirname(os.path.realpath(__file__)) # Current dir of module.
db = SqliteDatabase(os.path.join(curdir, 'filename.db'))