Django använder inte ? för parametreringen använder den istället formatsträngsstilsparametrar, dvs '%s' % 'hello' , etc. Se Att skicka parametrar till raw [Django docs]
.
Det verkar som att du vill göra en fråga i formen LIKE '<SOMETHING>%' , för det första, använd inte ? (använd %s istället), nästa istället för att försöka sammanfoga i frågan sammanfoga i python sig själv.
Därför bör din fråga vara som (Trunkerade irrelevanta delar):
cursor.execute("SELECT ... a.gene_name LIKE %s ORDER BY ...", ('{}%'.format(gene),))