sqlite3.DatabaseError: file is not a database

℡╲_俬逩灬. 提交于 2020-07-07 11:33:26

问题


I get the above error for executing the below INSERT-statement. The database file ce.db is in the same directory as my code and I have successfully created the tables therein.

My sqlite version is 2.8.17 and I am confident that my db file exists as I can see it in my directory and have succeeded in creating tables therein.

import 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()

Debugger shows "sqlite3.DatabaseError: file is not a database" error for the line starting with "result=...".


回答1:


Did some more digging and it turns out that 2.6.0 is the DB-API version (obtained via print(sqlite3.version) - not entirely sure what that is or what it's for) and my sqlite version (print(sqlite3.sqlite_version)) is 3.22.0. Also realised (running file ce.db in bash) that my ce.db was created on (or with?) 2.x... managed to remove and recreate it with sqlite3 ce.db statement.. seems to work now. All beginner problems, I know but figured it might helpt to share this for any future lost souls like me :)




回答2:


Anna, please, take a close look at your code. You are trying to connect to ce.db, but, as you say, your database is cd.db. You have typo mistake in your code, here is Sqlite trying you to say file ce.db is not a database file.

conn = sqlite3.connect("ce.db") # here is misspelled database name


来源:https://stackoverflow.com/questions/58585724/sqlite3-databaseerror-file-is-not-a-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!