执行以下 INSERT 语句时出现上述错误。数据库文件 ce.db 与我的代码位于同一目录中,我已经成功地在其中创建了表。
我的 sqlite 版本是 2.8.17,我确信我的 db 文件存在,因为我可以在我的目录中看到它,并且已经成功地在其中创建了表。
导入sqlite3
@app.route("/sign_up", methods=["GET", "POST"])
def sign_up():
# [..other code..]
conn = sqlite3.connect("ce.db")
c = conn.cursor()
result = c.execute("INSERT INTO users (name, hash) VALUES (:name, :hash)", {"name":request.form.get("username"), "hash":hashp})
conn.commit()
对于以“result=…”开头的行,调试器显示“sqlite3.DatabaseError:文件不是数据库”错误。
原文由 Anna 发布,翻译遵循 CC BY-SA 4.0 许可协议
做了更多的挖掘,结果发现 2.6.0 是 DB-API 版本(通过 print(sqlite3.version) 获得 - 不完全确定那是什么或它的用途)和我的 sqlite 版本(print(sqlite3.sqlite_version) ) 是 3.22.0。还意识到(在 bash 中运行文件 ce.db)我的 ce.db 是在(或使用?)2.x 上创建的……设法删除并使用 sqlite3 ce.db 语句重新创建它……现在似乎可以工作。所有初学者的问题,我知道,但认为它可能有助于像我这样的任何未来迷失的灵魂分享这个:)