Я успешно запросил 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])
Но в этом случае пользователь должен написать целое число.