我正在尝试存储有关学校学生的数据。我以前做过几个表,比如一个密码表和一个教师表,我以后会把它们放在一个程序中。
我已经从其中一个复制了创建表函数,并将值更改为Pupil的信息。它在其他程序上运行良好,但我一直得到:
sqlite3.OperationalError: no such table: PupilPremiumTable
字符串
当我尝试将一个pupil添加到表中时,它会出现在行中:
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)
型
7条答案
按热度按时间7d7tgy0s1#
假设当前工作目录与脚本所在的目录相同。这不是一个你可以做出的假设。您的脚本正在不同的目录中打开一个 new 数据库,该目录为空。
对数据库文件使用绝对路径。您可以基于脚本的绝对路径:
字符串
如果您想知道在哪里打开新的数据库文件,可以使用
os.getcwd()
验证当前的工作目录;你可能想清理你在那里创建的额外文件。qybjjes12#
我遇到了同样的问题,这就是我如何解决它的。
1.我按下Ctrl+C杀死了服务器
1.我删除了pychache文件夹。您将在项目文件夹中找到此文件夹。
1.我删除了sqlite db。
1.我使用
python manage.py makemigrations <app_name>
进行了迁移,其中<app_name>包含导致错误的模型的特定应用程序。在我的情况下,它是邮件应用程序,所以我运行python manage.py makemigrations应用程序。1.我以正常的方式迁移。
1.然后我启动了服务器,一切都解决了。
我相信问题就像豪尔赫·卡德纳斯说的那样:
也许你正在加载视图或查询到数据库,但你没有给Django足够的时间将模型迁移到数据库。这就是为什么“table不存在”。
此解决方案基于此youtube video
alen0pnh3#
首先,您需要检查该表是否100%存在于数据库中。你可以使用sqlite viewer来实现:https://inloop.github.io/sqlite-viewer/的数据。
如果表存在,那么你可以用
''
写你的表名,例如:字符串
无论你的查询是什么,我只是使用
Select *
作为一个例子。iklwldmw4#
我必须面对同样的问题,有几种方法,但我认为最有可能的一种。
也许你正在加载视图或查询到数据库,但你没有给Django足够的时间将模型迁移到数据库。这就是为什么“table不存在”。
确保在视图的代码中使用以下类型的初始化:
字符串
第二种方法是清理以前的迁移,删除数据库,然后重新开始迁移过程。
bbuxkriu5#
当我跟随 flask 博客教程时,我遇到了同样的问题。我已经初始化了数据库一次,当它开始给我sqlite3.OperationalError:然后我试图再次初始化,结果发现我的模式和www.example.com文件中有很多错误db.py。修复它们并再次初始化,它工作了。
qjp7pelc6#
添加这个对我有用:
字符串
请注意,要使代码正常工作,需要在
PupilPremiumTable.bd
之前添加\\
。xvw2m8pv7#
只需检查在第一个执行命令中创建的表的名称。它必须与要插入条目的表的名称匹配。