Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sqlite3.ERROR:没有这样的表:_Python_Database_Sqlite - Fatal编程技术网

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

Python sqlite3.ERROR:没有这样的表:,python,database,sqlite,Python,Database,Sqlite,我正在尝试存储有关学校学生的数据。我以前做过一些表格,比如密码和教师表格,稍后我将把它们合并到一个程序中 我几乎从其中一个复制了createtable函数,并将值更改为,以获取瞳孔信息。它在其他程序上运行良好,但我不断得到: sqlite3.OperationalError: no such table: PupilPremiumTable 当我尝试将一个学生添加到表中时,它出现在以下行: cursor.execute("select MAX(RecordID) from PupilPremi

我正在尝试存储有关学校学生的数据。我以前做过一些表格,比如密码和教师表格,稍后我将把它们合并到一个程序中

我几乎从其中一个复制了createtable函数,并将值更改为,以获取瞳孔信息。它在其他程序上运行良好,但我不断得到:

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:

如果您想知道打开新数据库文件的位置,可以验证当前工作目录是什么;您可能想要清理您在那里创建的额外文件。

我必须面对同样的问题,有几种方法,但我认为最有可能的方法

也许您正在将视图或查询加载到数据库中,但您没有给Django足够的时间将模型迁移到数据库中。这就是为什么“表不存在”

确保在视图的代码中使用这种初始化:

form RegisterForm(forms.Form):

    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)

第二种方法是清除以前的迁移,删除数据库并重新开始迁移过程。

首先,您需要检查该表是否100%存在于数据库中,您可以使用sqlite viewer进行此操作

如果表存在,则可以在“”中写入表名,例如

''从'TableName''中选择*


您的问题是,我只是使用Select*作为示例,我遇到了同样的问题,下面是我如何解决的

  • 我按下Ctrl+C组合键终止了服务器
  • 我删除了pychache文件夹。您将在项目文件夹中找到此文件夹
  • 我删除了sqlite数据库

  • 我使用
    python manage.py makemigrations进行了迁移

    您是否创建了表
    PupilPremiumTable
    ?是的,该表以前已经创建过,如果不清楚,很抱歉。它与此python文件位于同一文件夹中。请注意,如果您有一个名为
    PupilPremiumTable.db
    的文件,这并不意味着您有一个名为
    PupilPremiumTable
    的表,我已尝试连接到PupilPremiumTable和PupilPremiumTable.db。当我将行:
    和sqlite3.connect(“PupilPremiumTable.db”)更改为db:
    和sqlite3.connect(“PupilPremiumTable”)更改为db:
    时,它没有抛出错误,但仍然卡在相同的位置,当我更改
    游标时也是一样。执行(“从PupilPremiumTable中选择MAX(RecordID))
    to
    cursor.execute(“从PupilPremiumTable.db中选择MAX(RecordID))
    @BhargavRao:表存在,数据库存在,但使用相对路径可以在当前工作目录中打开它。当前工作目录可以是任何目录,这取决于脚本的启动方式。