我正在尝试在学校存储有关学生的数据。我以前做了几张桌子,比如密码和教师用的一张桌子,我稍后会把它们放在一个程序中。
我几乎从其中一个中复制了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)
答案 0 :(得分:30)
您假设当前的工作目录与您的脚本所在的目录相同。这不是您可以做出的假设。您的脚本正在另一个目录中打开 new 数据库,该目录为空。
使用数据库文件的绝对路径。您可以将其基于脚本的绝对路径:
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()
的对应关系;你可能想要清理你在那里创建的额外文件。
答案 1 :(得分:0)
我必须面对同样的问题,有两种方法,但是我认为是最可能的方法。
也许您正在将视图或查询加载到数据库,但是您没有给Django足够的时间来将模型迁移到DB。这就是为什么“表不存在”的原因。
确保在视图的代码中使用这种初始化:
form RegisterForm(forms.Form):
def __init__(self, *args, **kwargs):
super(RegisterForm, self).__init__(*args, **kwargs)
第二种方法是清理先前的迁移,删除数据库并重新开始迁移过程。
答案 2 :(得分:0)
首先,您需要检查datbase中该表是否100%存在,您可以使用sqlite查看器 https://inloop.github.io/sqlite-viewer/
如果存在表,则可以在''中输入表名
'''从'TableName'中选择*'''
无论您要查询什么,我都仅以Select *为例