Динамическая вставка значений в таблицу sqlite не работает (прилагается код)

#python #sqlite

#python #sqlite

Вопрос:

Я пытаюсь динамически вставлять значения в таблицу sqlite, но это не работает. Не могли бы вы взглянуть на приведенный ниже код и указать, допускаю ли я какие-либо ошибки.

 import sqlite3


def Create_Connection(db_file):

    Conn = None

    try:
        Conn = sqlite3.Connection(db_file)
        print("Connection Established")
    except Exception as E:
        print(E) #LOG THIS
    return Conn

def Enter_Values(Group, Timestamp, URL, Response, StatusCode, Message, IsCriticalError):

    if (Group == 'Google'):
        Query = "INSERT INTO Google(Timestamp, URL, Response, StatusCode, Message, IsCriticalError) VALUES(?, ?, ?, ?, ?, ?)",(
        Timestamp, URL, Response, StatusCode, Message, IsCriticalError)
        print(Query)
        Conn1 = Create_Connection('Urldb.db')
        if Conn1 is not None:
            Cursor = Conn1.cursor()
            Cursor.execute(Query)
            Conn1.commit()


    elif (Group == 'Wikipedia'):
        Query = "INSERT INTO Wikipedia (Timestamp,URL,Response,StatusCode,Message,IsCriticalError) VALUES (?, ?, ?, ?, ?, ?)",(
            Timestamp, URL, Response, StatusCode, Message, IsCriticalError)
        Conn1 = Create_Connection('Urldb.db')
        if Conn1 is not None:
            print('Creating Cursor')
            Cursor = Conn1.cursor()
            Cursor.execute(Query)
            Conn1.commit()
  

Переменная ‘Query’ с динамическими значениями соответствует этому, когда я запускаю код:

 ('INSERT INTO Google(Timestamp, URL, Response, StatusCode, Message, IsCriticalError) VALUES(?, ?, ?, ?, ?, ?)', ('04:38:41', 'https://www.google.com/', 'OK', 200, 'OK', 0))
  

Типы данных, которые я использовал при создании таблицы, следующие:

 CREATE TABLE IF NOT EXISTS {} (
            Timestamp text,
            URL text,
            Response text,
            StatusCode integer,
            Message Text,
            IsCriticalError integer
            )""".format(Group)
  

Я использую эту функцию в другом модуле. При запуске я не получаю никаких ошибок, просто данные не добавляются в базу данных.

Заранее спасибо.

Ответ №1:

При использовании параметризованного запроса вам нужно 2 аргумента execute , попробуйте

 query = """INSERT INTO Wikipedia(Timestamp, URL, Response, StatusCode, Message, IsCriticalError) VALUES (?, ?, ?, ?, ?, ?)"""
params = (Timestamp, URL, Response, StatusCode, Message, IsCriticalError)
Cursor.execute(query, params)