Как запросить SQL с помощью LIKE, чтобы найти целые числа?(Python) - PullRequest
0 голосов
/ 01 марта 2019

Я успешно запросил strings динамически с пользовательским вводом, подобным этому:

def read_part_of_database(table_column, user_query):
    c_lime.execute("SELECT * FROM lime_database_table WHERE {} LIKE '%{}%'" 
            "ORDER BY time_start".format(table_column, user_query))
    for row in c_lime.fetchall():
        print(row)

Это позволяет пользователю записывать как целое или часть string query, который передается как user_query.LIKE '%{}' разрешает принимать части query.

Однако, когда user_query передается как integer вместо string, database ничего не возвращает.Это верно независимо от того, пройдено ли все или часть integer.Я предположил, что это связано с цитатами вокруг string, которых нет для integers.Поэтому я попытался использовать %{}% вместо '%{}%', но это дало следующую ошибку:

c_lime.execute("SELECT * FROM lime_database_table WHERE {} LIKE {}% ORDER BY time_start".format(table_column, user_query))
sqlite3.OperationalError: near "ORDER": syntax error

Итак, мой вопрос: если user_query - это число вместо string, какя query это использую LIKE?

Как примечание, я успешно queried user_query как int, используя = ? вместо.Вот так:

c_lime.execute("SELECT * FROM lime_database_table WHERE {} = ? ORDER BY" 
"time_start".format(table_column), [user_query])

Но в этом случае пользователь должен написать целое число.

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