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),))