当前位置:首页 > 数据库 > SQlite

Python sqlite3.OperationalError:没有这样的表:

我想在学校存储有关学生的数据.我以前做了几张桌子,比如密码和教师用的一张桌子,我稍后会把它们放在一个程序中.

我几乎从其中一个复制了create table函数,并将值更改为Pupil的信息.它在其他程序上工作正常,但我一直在:

sqlite3.OperationalError: no such table: PupilPremiumTable

当我尝试将瞳孔添加到表中时,它出现在该行上:

cursor.execute("select MAX(RecordID) from PupilPremiumTable")

我查看文件夹,有一个名为PupilPremiumTable.db的文件,该表已经创建过,所以我不知道它为什么不起作用.

这是我的一些代码,如果您需要更多随意告诉我,正如我之前所说的那样,所以我不知道为什么它不起作用甚至什么不起作用:

with sqlite3.connect("PupilPremiumTable.db") as db:
    cursor = db.cursor()
    cursor.execute("select MAX(RecordID) from PupilPremiumTable")
    Value = cursor.fetchone()
    Value = str('.'.join(str(x) for x in Value))
    if Value == "None":
        Value = int(0)
    else:
        Value = int('.'.join(str(x) for x in Value))
    if Value == 'None,':
        Value = 0
    TeacherID = Value + 1
    print("This RecordID is: ",RecordID)

解决方法:

您假设当前工作目录与脚本所在的目录相同.这不是您可以做出的假设.您的脚本正在另一个目录中打开一个新数据库,该目录为空.

使用数据库文件的绝对路径.您可以将其基于脚本的绝对路径:

import os.path

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(BASE_DIR, "PupilPremiumTable.db")
with sqlite3.connect(db_path) as db:

如果要确定打开新数据库文件的位置,可以使用os.getcwd()验证当前工作目录的内容.你可能想要清理你在那里创建的额外文件.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!