Django nepoužívá ? pro parametrizaci spíše používá parametry ve stylu formátovacího řetězce, tj. '%s' % 'hello' atd. Viz Předávání parametrů do raw [Django docs]
.
Vypadá to, že chcete vytvořit dotaz ve tvaru LIKE '<SOMETHING>%' , za prvé nepoužívejte ? (použijte %s místo toho), další místo pokusu o zřetězení v dotazu zřetězení v pythonu sám.
Váš dotaz by tedy měl být jako (Zkrácené irelevantní části):
cursor.execute("SELECT ... a.gene_name LIKE %s ORDER BY ...", ('{}%'.format(gene),))