Django non usa ? per la parametrizzazione, utilizza invece parametri di stile stringa di formato, ovvero '%s' % 'hello' , ecc. Vedi Passaggio di parametri in raw [Documenti Django]
.
Sembra che tu voglia fare una query del modulo LIKE '<SOMETHING>%' , in primo luogo non utilizzare ? (usa %s invece), next invece di provare a concatenare nella query concatenare in python stesso.
Quindi la tua query dovrebbe essere come (Parti irrilevanti troncate):
cursor.execute("SELECT ... a.gene_name LIKE %s ORDER BY ...", ('{}%'.format(gene),))