Sqlite 3: ошибка при открытии базы данных с неправильным количеством предоставленных привязок. В текущем операторе используется 1, а их 4

#python #sqlite

#python #sqlite

Вопрос:

Я уже пробовал добавлять запятую после имени и вопросительный знак в «ЗНАЧЕНИЯХ» и получал синтаксическую ошибку для моего фрагмента.

 @app.route("/Disease/new", methods = ["POST"])
def addDisease():
    newDisease = {}
    conn = None
    try:
        jsonPostData = request.get_json()
        Name = jsonPostData["Name"]

        conn = sqlite3.connect("./dbs/ContactTracer.db")
        conn.row_factory = sqlite3.Row
        sql = """
            INSERT INTO Disease(Name) VALUES(?)
        """
        cursor = conn.cursor()
        cursor.execute(sql, (Name))
        conn.commit()
        sql = """
            SELECT Disease.ID, Disease.Name
            From Disease
            Where Disease.ID = ?
        """
        cursor.execute(sql,(cursor.lastrowid,))
        row = cursor.fetchone()
        newDisease["ID"] = row["ID"]
        newDisease["Name"] = row["Name"]
    except Error as e:
        print(f"Error opening the database{e}")
        abort(500)
    finally:
        if conn:
            conn.close()

    return newDisease
 

Ответ №1:

Удалите () и проверьте, удалось ли INSERT выполнить

 cursor.execute(sql, Name)
...
if cursor.lastrowid:
    cursor.execute(sql, cursor.lastrowid)
 

Комментарии:

1. Добавьте трассировку стека, схему базы данных и т. Д. чтобы помочь определить проблему