Rétrospectivement, c'était une erreur vraiment stupide mais difficile à repérer. Les valeurs sont un mot-clé dans sql, donc les valeurs du nom de la table doivent être entourées de guillemets.
def __insert_values(self, values):
cursor = self.connection.cursor()
cursor.executemany("""
insert into `values` (ensg, value, sampleid)
values (%s, %s, %s)""", values)
cursor.close()