Я новичок в программировании и работе над домашним заданием. Я пытаюсь выполнить поиск базы данных, сравнивая условия поиска пользователя с любыми соответствующими значениями из выбранного столбца. Если пользователь ищет «Смит» и нажимает на переключатель «Смит» в моем графическом интерфейсе, все записи, содержащие «Смит» в качестве его автора, должны появиться. Я могу распечатать все записи в базе данных, но не записи, относящиеся к моему поиску.Python: Поиск базы данных с использованием SQL
db = None
colNum = None
def search_db(self):
global db
global colNum
self.searchTerm = self.searchvalue.get()
dbname = 'books.db'
if os.path.exists(dbname):
db = sqlite3.connect(dbname)
cursor = db.cursor()
sql = 'SELECT * FROM BOOKS'
cursor.execute(sql)
rows = cursor.fetchall()
for record in rows:
sql_search = 'SELECT * FROM BOOKS WHERE' + ' ' + record[colNum] + ' ' + 'LIKE "%' + ' ' + self.searchTerm + '%"'
cursor.execute(sql_search)
searched_rows = cursor.fetchall()
print(searched_rows)
Ошибка я получаю не «sqlite3.OperationalError: нет такой колонки:»
Это не ваша проблема, но [вы не должны создавать SQL-запросы с динамическими данными таким образом] (https://xkcd.com/327/). – abarnert