Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sqlite3.DatabaseError: file is not a database

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=...".

like image 445
Anna Avatar asked Sep 02 '26 01:09

Anna


2 Answers

I also had this problem with creating a db in Python using sqlite3, what solved it for me was to remove .db from database name:

conn = sqlite3.connect("ce.db") --> conn = sqlite3.connect("ce")

(+ also have 2.6.0 DB-API version and my sqlite version is 3.31.1)

like image 143
Tim Avatar answered Sep 05 '26 10:09

Tim


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 :)

like image 21
Anna Avatar answered Sep 05 '26 09:09

Anna



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!