Как сделать поиск по первой букве в psycopg2 и python?
Решил написать простенькое приложение для учета расхода комплектующих (все для себя).
Захотел сделать поиск, чтобы в таблицу приложения вытягивались наименования.
Написал следующее:
cur.execute("select id from Компоненты where Наименование_компонента ilike %s group by Компоненты.id;", [search])
Однако данное решение выполняет поиск по полному наименованию (что логично). В самом psql как сделать поиск по первой букве знаю, а как это выглядит в psycopg2 без понятия. Чтение документации не помогло, там как раз и описывается поиск с полным наименованием. В общем еще раз суть, что и как нужно использовать\написать, чтобы выполнить поиск по первой букве?
P.S. Опыта программирования не много, прошу простить!
Черт возьми, по подстроке то что надо. Раз пошла такая пляска, можете в двух словах объяснить [f'%{search}%']? какой принцип? В общем то вечером и сам почитаю, но если не затруднит, то был бы признателен!
Cross5820, оно вставляет искомую строку в запрос с wildcard-символами - типа %а% для буквы "а" - из-за чего поиск производится не по точному совпадению, а используя подстроки.
f'%{search}%' - просто пример записи с помощью f-форматирования python
Ну и что б совсем достать, не могли бы вы мне посоветовать книгу по python? Читал Прохоренок Н.А. "Python 3 и PyQt.", все в общем и целом было понятно, однако остались пробелы в понимании некоторых принципов (тут скорее я несколько недалек).
Владимир Куц, кстати, не уверен что это нужно писать в данную тему, однако. Вчера вечером хотел сделать выборку, однако никак не мог сообразить, как сделать ее гибкой. У меня есть 7 колонок по типу "учетный номер С такого-то ПО такой то, наименование, заводской номер, дата приема, дата отправки, город". В общем то как сделать эту самую выборку по определенным значениям я знаю, но она получается довольно жесткой.
Суть вопроса: как сделать выборку, чтобы я мог выбирать, допустим, только "заводской номер", потом "учетный номер" и "наименование", в следующий раз "дата приема" и "наименование", в следующий раз "учетный номер" и "дата отправки" и все в таком духе. Не обязательно по два значения, это я как пример. Описать в коде абсолютно все варианты выборки и задать условие? Мне кажется есть более простой и хороший способ....
Мне кажется есть более простой и хороший способ....
У вас Python используется просто для оперирования с сырыми запросами к БД.
Для более гибких и удобных способов работы с БД - придумали ORM. Где вы работаете уже с объектами.
Советую ознакомится с https://www.sqlalchemy.org/
Ну либо использовать Django - у него тоже гибкая и мощная система ORM
Владимир Куц, не знаю как так получилось, но что Django, что SQLАлхимия прошли меня стороной и я большую часть базы данных написал оперируя сырыми запросами к БД. Почитал про SQLАлхимию и Django и прям восхитился их возможностями. Спасибо большое! Буду теперь все переделывать) Книжка М.Лутца "Изучаем Python" уж больно дорогая... Пока повременю, но обязательно ознакомлюсь. Еще раз огромное спасибо!