Vì bạn đang sử dụng Python 2.7, bạn cần chỉ định rằng chuỗi của bạn chứa unicode.
>>> db.session.add(Users(u'ä'))
Bạn cũng có thể sử dụng phép nhập trong tương lai để coi tất cả các chuỗi là unicode.
from __future__ import unicode_literals
Ngoài ra, bạn có thể nâng cấp phiên bản Python của mình. 2.7 là phiên bản cuối cùng coi các chuỗi là byte thay vì unicode.
Chỉnh sửa
Bạn cũng sẽ cần cập nhật __repr__
của mình để nó xử lý đúng unicode.
def __repr__(self):
return self.name.decode('utf-8')
hoặc bất kỳ bảng mã nào bạn muốn sử dụng.
Nói chung, bạn sẽ cần đảm bảo rằng bạn xử lý mã hóa từ và giải mã thành unicode. Tôi không thể thôi thúc bạn cân nhắc sử dụng phiên bản Python mới hơn. Một trong những thay đổi lớn nhất trong Python 3 giải quyết vấn đề này.