See reference on SQLAlchemy mapping styles here. I made the switch from constructing class contents dictionaries and then using type to create the class (in "Declarative" style) to creating a "Classical" model class and building it up modularly a while ago, without realizing the difference. There is no problem with this, but I believe it might be confusing for beginning SQLAlchemy users, and would be easy to use the mapping API to create mapped model classes dynamically from the classical ones.