Я строю приложение базы данных на практике. Я хочу использовать набор функций для предоставления функций создания, обновления, добавления и удаления, создавая команды SQL, которые они будут передавать функции соединителя, которая будет обрабатывать соединение с базой данных, выполнять, фиксировать и закрывать.
Я пытался использовать "команду SQL% s", (что-то)
Также пробовал выше, но с? вместо% s
Это кажется правильным синтаксисом, но обычно включается непосредственно в функцию execute
import sqlite3
class Connector:
def __init__(self,name):
self.db_name = name
self.table = "book"
def change_table(self,table):
self.table = table
def create_db(self):
command = "CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title TEXT, author TEXT, year INTEGER, isbn INTEGER)"
return self.generic_connector(command)
def insert(self,title,author,year,isbn):
try:
title = str(title)
author = str(author)
isbn = int(isbn)
year = int(year)
command = "INSERT INTO book VALUES(:title,:author,:year,:isbn)",
{"title": title,"author": author,"year": year,"isbn":isbn}
print(command)
return self.generic_connector(command)
except ValueError:
return 1
def generic_connector(self,command):
command = command[0], command[1]
print(command)
try:
conn = sqlite3.connect(self.db_name)
cur = conn.cursor()
cur.execute(command)
rows = cur.fetchall()
conn.commit()
conn.close()
return rows
except (ValueError, SyntaxError):
print("oops")
Когда я печатал команду, я ожидал увидеть: -
"CREATE TABLE IF NOT EXISTS table_name (id INTEGER PRIMARY KEY, title TEXT, author TEXT, year INTEGER, isbn INTEGER)"
Вместо этого я получил это: -
("CREATE TABLE IF NOT EXISTS %s (id INTEGER PRIMARY KEY, title TEXT, author TEXT, year INTEGER, isbn INTEGER)", (self.table,))