sqlite3.DatabaseError: файл не является базой данных - PullRequest
0 голосов
/ 28 октября 2019

Я получаю вышеуказанную ошибку за выполнение нижеприведенного INSERT-оператора. Файл базы данных ce.db находится в том же каталоге, что и мой код, и я успешно создал таблицы в нем.

Моя версия sqlite 2.8.17, и я уверен, что мой файл БД существует, как я его вижув моем каталоге и удалось создать таблицы в нем.

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

Отладчик показывает ошибку «sqlite3.DatabaseError: файл не является базой данных» для строки, начинающейся с «result =... ".

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Сделал еще несколько копаний, и оказалось, что 2.6.0 является версией DB-API (полученной с помощью print (sqlite3.version) - не совсем уверен, что это такое или для чего она нужна) и моей версией sqlite (print (sqlite3).sqlite_version)) - 3.22.0. Также понял (работает файл ce.db в bash), что мой ce.db был создан на (или с?) 2.x ... удалось удалить и воссоздать его с помощью оператора sqlite3 ce.db .. похоже, работает сейчас. Все проблемы новичка, я знаю, но подумал, что это могло бы помочь поделиться этим для любых будущих потерянных душ, таких как я:)

0 голосов
/ 28 октября 2019

Анна, пожалуйста, внимательно посмотрите на свой код. Вы пытаетесь подключиться к ce.db, но, как вы говорите, ваша база данных cd.db. В вашем коде есть опечатка, здесь Sqlite пытается сказать, что файл ce.db не является файлом базы данных.

conn = sqlite3.connect("ce.db") # here is misspelled database name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...