SQLite OperationalError:no such table:songdata despite table creation in Python script

i7uaboj4  于 2023-11-21  发布在  SQLite
关注(0)|答案(1)|浏览(152)

我在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工作,但我就是不明白这一点.

kulphzqa

kulphzqa1#

您的代码引用了"../music.db""music.db",这是两个完全独立的文件。
我建议将文件路径设置为常量,例如。

DATABASE_FILE = "./music.db"

字符串
在程序的顶部,并在所有的sqlite3.connect()调用中使用它,或者更好:

def connect_database():
    return sqlite3.connect(DATABASE_FILE)


并使用它而不是单独的sqlite3.connect(DATABASE_FILE)调用。

相关问题