cursor.execute () возвращает пустой список при использовании с параметризованным запросом (python, sqlite) - PullRequest
0 голосов
/ 12 октября 2019

когда я использую этот код:

 def recherche(case,value='*'):
        cursor = sqliteConnection.cursor()
        if value == '*':
            cursor.execute("SELECT * FROM Articles ORDER BY ID;")
        else:
            value="%" + str(value) + "%"
            p=(case,value)
            cursor.execute("SELECT * FROM Articles WHERE ? LIKE ? ORDER BY ID;",p)
        result = cursor.fetchall()
        cursor.close()
        return result

результат возвращается в виде пустого списка
с другой стороны, если я использую это:

 def recherche(case,value='*'):
        cursor = sqliteConnection.cursor()
        if value == '*':
            cursor.execute("SELECT * FROM Articles ORDER BY ID;")
        else:
            value=str(value)
            p=(case,value)
            cursor.execute("SELECT * FROM Articles WHERE " + case + " LIKE '%" + value + "%' ORDER BY ID;")
        result = cursor.fetchall()
        cursor.close()
        return result

значения возвращаются правильно.
Из того, что я понял, первый метод более оптимизирован, но у меня он совсем не работает.

1 Ответ

0 голосов
/ 15 октября 2019

LIKE ? должно быть:

LIKE '?'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...