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