我在Python代码中遇到了SQLite数据库的问题。尽管创建表的代码似乎是正确的,但我得到了以下错误消息:sqlite3.OperationalError:no such table:songdata
我正在构建一个音乐测验程序,它与SQLite数据库交互,以检索问题的数据,作为我的最终cs50 p项目。
我有一个继承自基类Question的类Question 1。Question 1负责生成关于歌曲和艺术家的问题。Question类有从SQLite数据库检索数据的方法,并接受用户输入以回答问题。
当尝试对“songdata”表执行查询时发生错误,如果该表不存在,则应创建该表。
con = sqlite3.connect("../music.db")
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS songdata(artist TEXT, album TEXT, song TEXT, date INTEGER)")
字符串
这是在执行过程中发生错误的方法:
def get_line_from_db(self):
con = sqlite3.connect("music.db")
cur = con.cursor()
cur.execute('SELECT * FROM songdata ORDER BY RANDOM() LIMIT 1')
# res = cur.execute("SELECT * FROM songdata ORDER BY RANDOM() LIMIT 1")
results = cur.fetchall()
con.commit()
con.close()
# format result data
for result in results:
self.key_data = list(result)
artist, album, song, date = self.key_data
return artist, album, song, date
型
完整代码如下:https://github.com/MichaelHorak/MyFirstProjects/blob/049f8dbc7dafe39fdf468a25871d5eea03b38bce/project_1.py
任何见解或建议,什么可能导致这个问题将不胜感激。谢谢!我越来越绝望,因为我已经在这方面工作了一个多月,它刚刚停止工作,我不能弄清楚。
我试过使用路径,但无济于事。我也试过删除正在项目文件夹中创建的数据库,但没有改进。我写了不同版本的代码,从完整的过程到完整的oop,都没有运气。我只是想能够从我基于itunes API创建的数据库中检索数据。
我张贴在这里作为最后的手段.我没有找到任何解决我的问题,在以前问这里,也没有在谷歌搜索的问题.我也看了一堆视频的人与sqlite在python工作,但我就是不明白这一点.
1条答案
按热度按时间kulphzqa1#
您的代码引用了
"../music.db"
和"music.db"
,这是两个完全独立的文件。我建议将文件路径设置为常量,例如。
字符串
在程序的顶部,并在所有的
sqlite3.connect()
调用中使用它,或者更好:型
并使用它而不是单独的
sqlite3.connect(DATABASE_FILE)
调用。