Python 2 сложен при работе с юникодом, поскольку изначально обрабатывает только двоичные файлы. Таким образом, ваш символ фунта был закодирован и сохранен в БД. Вы можете получить его так:
>>> '\xc2\xa340'.decode('utf-8')
u'\xa340'
>>> print('\xc2\xa340'.decode('utf-8'))
£40
Таким образом, есть два места, где можно обрабатывать это кодирование и декодирование:
Перед сохранением данных. При сохранении данных, если вы их кодируете, тогда не будет проблем с рендерингом. Как то так (psuedocode):
cursor.execute('INSERT INTO metadata VALUES (%s, %s)', name.encode('utf-8), description.encode('utf-8'))
Или вы можете декодировать двоичный файл после получения данных и перед отправкой в функцию render_template:
name = result[0].decode('utf-8')
description = result[0].decode('utf-8')
return render_template('template.html', name=name, desc=description)
Выберите тот, который будет более удобным для вашей реализации.