Как передать оператор команды SQL в качестве аргумента другой функции - PullRequest
0 голосов
/ 19 июня 2019

Я строю приложение базы данных на практике. Я хочу использовать набор функций для предоставления функций создания, обновления, добавления и удаления, создавая команды 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,))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...