Ponieważ używasz Pythona 2.7, musisz określić, że twój ciąg zawiera Unicode.
>>> db.session.add(Users(u'ä'))
Możesz również użyć przyszłego importu, aby traktować wszystkie ciągi jako Unicode.
from __future__ import unicode_literals
Alternatywnie możesz zaktualizować swoją wersję Pythona. 2.7 to ostatnia wersja, która traktuje ciągi jako bajty, a nie Unicode.
Edytuj
Musisz także zaktualizować swój __repr__
tak, aby poprawnie obsługiwał Unicode.
def __repr__(self):
return self.name.decode('utf-8')
lub dowolne kodowanie, którego chcesz użyć.
Ogólnie rzecz biorąc, musisz upewnić się, że obsługujesz kodowanie zi dekodowanie do Unicode. Nie mogę cię nakłonić do rozważenia użycia nowszej wersji Pythona. Jedna z największych zmian w Pythonie 3 rozwiązuje ten problem.