Django não usa
?
para a parametrização, usa parâmetros de estilo de string de formato, ou seja, '%s' % 'hello'
, etc. Consulte Passando parâmetros para raw [documentos do Django]
. Parece que você quer fazer uma consulta no formato
LIKE '<SOMETHING>%'
, em primeiro lugar não use ?
(use %s
em vez disso), next em vez de tentar concatenar na consulta concatenar em python em si. Portanto, sua consulta deve ser como (partes irrelevantes truncadas):
cursor.execute("SELECT ... a.gene_name LIKE %s ORDER BY ...", ('{}%'.format(gene),))