Недавно я начал учиться и пытаться применить 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,...)"
Комментариев нет:
Отправить комментарий