GOOGLE ADS

воскресенье, 24 апреля 2022 г.

Как я могу вставить переменные в таблицу, используя запрос sqlite?

Недавно я начал учиться и пытаться применить SQL в своем коде на Python и столкнулся с этой проблемой; Я не могу найти способ правильно вставить переменные в таблицу, используя те настройки, которые у меня есть. Эта настройка взята из учебника по библиотеке SQL на realpython.com ( https://realpython.com/python-sql-libraries/ ), и, судя по различным форматам настроек sqlite, я чувствую, что она не слишком эффективна.

import sqlite3
from sqlite3 import Error
# - - - - SQL DATABASE SETUP - - - - #
def create_connection(path):
connection = None
try:
connection = sqlite3.connect(path)
print("Connection to SQLite DB successful")
except Error as e:
print(f"The error '{e}' occurred")
return connection
connection = create_connection("databse.sqlite") # Creates the connection
def execute_query(connection, query):
cursor = connection.cursor()
try:
cursor.execute(query)
connection.commit()
print("Query executed successfully")
except Error as e:
print(f"The error '{e}' occurred")
create_users_table = """
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
grade INTEGER,
gender TEXT,
nationality TEXT
);
"""
execute_query(connection, create_users_table)

# - - - - ^ SQL DATABSE SETUP ^ - - - - #

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

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

Первая попытка выглядела так

name = str(input("Hi! What is your name?\n"))
store_name = ("""
INSERT INTO users (name)
VALUES (?)
""", name)
execute_query(connection, store_name)

Что дало мне ошибку "ValueError: параметр операции должен быть str"

Позже я попытался удалить переменную и просто подключить запрос как однострочный оператор, заключенный в параметр.

execute_query(connection, ("INSERT INTO users (name) VALUES (?)", name))

Та же ошибка, может быть простая ошибка с моей стороны, которую я не вижу.

И снова, если эта установка не эффективна, я был бы признателен за любой совет.


Решение проблемы

вам нужно использовать тот же запрос, что и MySQL. Например - "ВСТАВИТЬ В таблицу (столбец1, столбец2,..) ЗНАЧЕНИЯ(значение1, значение2,...)"

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

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...