SQL использует подстановочный знак <% и заполнителив операторе SELECT.(В питоне с sqlite3) - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь просмотреть список имен генов и запросить их в моей базе данных SQL следующим образом:

list_of_genes = ["IFNL", "TMPT", "G6PD", "UGT1A1", ...]
for gene in list_of_genes:
    sql.execute('''SELECT DISTINCT gene_symbol, haplo_function FROM Haplotypes 
                   WHERE gene_symbol LIKE "%" + ? + "%"
                   ''', (gene,))

Что я хочу сделать, это получить все записи из моей таблицы гаплотипов, гдеgene_symbol похож на мой gene из list_of_genes.Ген из списка может называться IFNL, а gene_symbol в базе данных может быть похож на IFNL*1 или что-то подобное.Этот запрос дает 0 результатов, так как я могу добавить подстановочные знаки в инструкцию SELECT вместе с заполнителем?

Если я сделаю запрос, как показано ниже;Я получаю много результатов, но не все, поскольку некоторые gene_symbols добавили информацию помимо имени_гена.

for gene in list_of_genes:
    sql.execute('''SELECT DISTINCT gene_symbol, haplo_function FROM Haplotypes 
                   WHERE gene_symbol LIKE  ?
                   ''', (gene,))

Извините, если я задаю простые или глупые вопросы, но я попытался найтиза это, но не смог найти ничего, что сочетало бы и <%> символы подстановки, и?заполнители / параметры.

1 Ответ

0 голосов
/ 23 мая 2018

Если я правильно понял ваш вопрос, вы можете попробовать что-то вроде этого:

cur.execute('SELECT * FROM t WHERE t.param LIKE ?', ("%" + val + "?",))
...