Я работаю над небольшим любимым проектом, который организует комиксы людей и сохраняет метаданные о них в базе данных SQL.Ради правильности, я использую подготовленные операторы вместо встроенных строковых операторов Python, но я не могу заставить их работать правильно.Вот краткий фрагмент кода, который я сделал для иллюстрации проблем, с которыми я сталкиваюсь:
#!/usr/bin/env python
import sqlite3
connection = sqlite3.connect("MyComicBox.db")
curs = connection.cursor()
curs.execute("CREATE TABLE IF NOT EXISTS comic_collection (id INTEGER PRIMARY KEY, series TEXT, publisher TEXT, issue TEXT, tags TEXT)")
connection.commit()
def addComic(series = "", publisher = "", issue = "", tags = ""):
curs.execute("INSERT INTO comic_collection (series, publisher, issue, tags) VALUES(?, ?, ?, ?)", (series, publisher, issue, tags))
connection.commit()
def search(attribute, val):
"""
Do an SQL query for all comics where attribute LIKE val and return a list of them.
"""
# cmd = "SELECT * from comic_collection WHERE %s LIKE '%s'" % (attribute, val)
# curs.execute(cmd)
cmd = "SELECT * from comic_collection WHERE ? LIKE ?"
curs.execute(cmd, (attribute, val))
results = []
for comic in curs:
results.append(comic)
return results
addComic(series = "Invincible Iron Man", issue = "500", publisher = "Marvel Comics", tags = "Iron Man; Spider-Man; Mandarin")
searchResults = search("issue", "500")
for item in searchResults:
print item
Моя проблема в функции поиска.Запрос ничего не возвращает, если я не заменю две строки, где я выполняю cmd, используя?оператор с двумя (закомментированными) строками, где я выполняю cmd, используя встроенные строковые операторы Python.Кто-нибудь может помочь мне понять, что я делаю неправильно?