Python sqlite3.ERROR:没有这样的表:
我正在尝试存储有关学校学生的数据。我以前做过一些表格,比如密码和教师表格,稍后我将把它们合并到一个程序中 我几乎从其中一个复制了createtable函数,并将值更改为,以获取瞳孔信息。它在其他程序上运行良好,但我不断得到:Python sqlite3.ERROR:没有这样的表:,python,database,sqlite,Python,Database,Sqlite,我正在尝试存储有关学校学生的数据。我以前做过一些表格,比如密码和教师表格,稍后我将把它们合并到一个程序中 我几乎从其中一个复制了createtable函数,并将值更改为,以获取瞳孔信息。它在其他程序上运行良好,但我不断得到: sqlite3.OperationalError: no such table: PupilPremiumTable 当我尝试将一个学生添加到表中时,它出现在以下行: cursor.execute("select MAX(RecordID) from PupilPremi
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*作为示例,我遇到了同样的问题,下面是我如何解决的
python manage.py makemigrations进行了迁移您是否创建了表PupilPremiumTable
?是的,该表以前已经创建过,如果不清楚,很抱歉。它与此python文件位于同一文件夹中。请注意,如果您有一个名为PupilPremiumTable.db
的文件,这并不意味着您有一个名为PupilPremiumTable
的表,我已尝试连接到PupilPremiumTable和PupilPremiumTable.db。当我将行:和sqlite3.connect(“PupilPremiumTable.db”)更改为db:
和sqlite3.connect(“PupilPremiumTable”)更改为db:
时,它没有抛出错误,但仍然卡在相同的位置,当我更改游标时也是一样。执行(“从PupilPremiumTable中选择MAX(RecordID))
tocursor.execute(“从PupilPremiumTable.db中选择MAX(RecordID))
@BhargavRao:表存在,数据库存在,但使用相对路径可以在当前工作目录中打开它。当前工作目录可以是任何目录,这取决于脚本的启动方式。