Chà, trong vòng một giờ sau khi đăng câu hỏi của mình, tôi đã tìm ra nó. Có lẽ tôi nên nghiên cứu thêm một chút trước khi đăng.
Vấn đề là sqlalchemy cần được định cấu hình để sử dụng mã hóa utf-8. Giải pháp trong đoạn mã trên là thay đổi dòng 3 thành:
engine = create_engine('mysql://root:@localhost/testdb?charset=utf8', encoding = 'utf-8')