Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2019 20:32:36

Gens007
Зарегистрирован: 2019-11-28
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос sqlite для поиска по похожим строкам

Приветствую.
Столкнулся с проблемой.
Есть база данных sqlite по которой нужно сделать выборку по похожим записям. Пробую делать запрос с прописанным в коде значением text и все работает.

 SELECT * FROM table WHERE column LIKE '%text%') 

Требуется что бы была подстановка значения text введенного в программе пользователем.

Для поиска точного значения использую запрос такого вида и все работает нормально.
 SELECT * FROM table WHERE column = '%s' " % text)

Вот код программы:
 import vk_api, random
import sqlite3, datetime
conn = sqlite3.connect("db.db3")
c = conn.cursor()
vk_session = vk_api.VkApi(token='TOKEN_HERE')
from vk_api.longpoll import VkLongPoll, VkEventType
longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()
def check_url(text):  ### Работает при точном запросе
    c.execute("SELECT * FROM table WHERE column = '%s' " % text)
    result = c.fetchone()
    print("Ресулт ВК:")
    print(result)
    print("Текст ВК:")
    print(text)
    if result is None:
        return True
    return False
def check_c(text):
    c.execute("SELECT * FROM table WHERE column LIKE %'%s'% " % text)  ## Как подставить значение text c условием поиска по частичному совпадению ('%text%') ?
    result = c.fetchone()
    print("Ресулт like:")
    print(result)
    print("Текст Like:")
    print(text)
    if result is None:
        return True
    return False
if not check_c(event.text.lower()):
                print("Есть")
                vk.messages.send(
                    user_id=event.user_id,
                    message="Есть" ,
                    keyboard=open("keyboard.json", "r", encoding="UTF-8").read(),
                    random_id=random_id()
                )

Как реализовать такой же запрос но с параметром LIKE ‘%text%’

Отредактировано Gens007 (Ноя. 28, 2019 21:21:23)

Офлайн

#2 Ноя. 28, 2019 21:23:06

Gens007
Зарегистрирован: 2019-11-28
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос sqlite для поиска по похожим строкам

Решил вопрос сам.

Если вдруг кто столкнется с подобным вот решение.

 ("SELECT * FROM table WHERE column '%%%s%%' " % text)

Отредактировано Gens007 (Ноя. 28, 2019 23:47:36)

Офлайн

#3 Ноя. 28, 2019 21:38:41

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2724
Репутация: +  183  -
Профиль   Отправить e-mail  

Запрос sqlite для поиска по похожим строкам

> Если вдруг кто столкнется с подобным вот решение.

Вообще то эти параметры нужно по другому задавать.
http://python-3.ru/page/parameterized-queries-sqlite-python



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version