在Google Colab中操作SQLite数据库遭遇OperationalError:无法找到BANDS表的问题求助
在Google Colab中操作SQLite数据库遭遇OperationalError:无法找到BANDS表的问题求助
嗨,别着急,这个问题其实很好解决,咱们先揪出问题的根源~
你碰到的OperationalError: no such table: BANDS,核心原因是表名完全不匹配:你在代码里创建的表是INSTRUCTOR,但插入数据的时候却想往BANDS表里塞数据,数据库当然找不到这个不存在的表啦!
给你两种修正方案,你可以根据自己的实际需求选:
方案一:如果你的目标表就是INSTRUCTOR
把插入语句里的BANDS改成INSTRUCTOR,另外别忘了加事务提交(不然数据不会真正存进数据库哦):
import sqlite3 connect = sqlite3.connect('BANDS.db') cursor_obj = connect.cursor() # 创建INSTRUCTOR表 table = """create table IF NOT EXISTS INSTRUCTOR(ID INTEGER PRIMARY KEY NOT NULL, Band_Name VARCHAR(20), Start_Year VARCHAR(20), CITY VARCHAR(20));""" cursor_obj.execute(table) print("Table is Ready") # 插入数据到INSTRUCTOR表 cursor_obj.execute('''insert into INSTRUCTOR values(1, "Black Flag", "1976", "Hermosa Beach"), (2, "King GIzzard", "2010", "Melbourne" ), (3, "Metallica", "1981", "Los Angles")''') # 提交事务,确保数据保存 connect.commit() print("Data inserted successfully") # 最后记得关闭连接 connect.close()
方案二:如果你的目标表是BANDS
把创建表语句里的INSTRUCTOR改成BANDS,这样插入语句就能匹配上正确的表了:
import sqlite3 connect = sqlite3.connect('BANDS.db') cursor_obj = connect.cursor() # 创建BANDS表(把INSTRUCTOR替换成BANDS) table = """create table IF NOT EXISTS BANDS(ID INTEGER PRIMARY KEY NOT NULL, Band_Name VARCHAR(20), Start_Year VARCHAR(20), CITY VARCHAR(20));""" cursor_obj.execute(table) print("Table is Ready") # 插入数据到BANDS表 cursor_obj.execute('''insert into BANDS values(1, "Black Flag", "1976", "Hermosa Beach"), (2, "King GIzzard", "2010", "Melbourne" ), (3, "Metallica", "1981", "Los Angles")''') # 提交事务 connect.commit() print("Data inserted successfully") # 关闭连接 connect.close()
再给你补充两个新手容易踩的坑:
- 操作SQLite时,插入、更新数据后一定要调用
connect.commit(),不然改动只会停留在内存里,不会写到数据库文件中。 - 关于Colab的文件路径:你用
sqlite3.connect('BANDS.db')是在当前工作目录创建数据库,这个路径是完全没问题的。如果想确认文件是否存在,可以在Colab里执行!ls命令,就能看到当前目录下的所有文件了。
备注:内容来源于stack exchange,提问作者Obi
相关产品推荐
相关产品推荐

