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

Ben*_*Ben 19 python database sqlite

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

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

sqlite3.OperationalError: no such table: PupilPremiumTable
Run Code Online (Sandbox Code Playgroud)

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

cursor.execute("select MAX(RecordID) from PupilPremiumTable")
Run Code Online (Sandbox Code Playgroud)

我查看文件夹,并且有一个文件被调用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)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 39

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

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

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:
Run Code Online (Sandbox Code Playgroud)

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