To add to this, if you are using mypy you can use this package:
https://github.com/dropbox/sqlalchemy-stubs
Note that different from django, which define a different field to each type (i.e. CharField for str, IntegerField for int, etc), sqlalchemy uses a parameter for that. So you probably want to define a single `Column` and an `overload` for its `__init__`/`__new__` methods for each possible column typetype to return a different descriptor to match the configuration, probably also taking `nullable` into consideration to type it as `<type> | None`.