Primary keys¶
Though the primary key fields of the User and Role models may be named differently than ‘id’, the primary key type MUST be an integer and can not be a compound key.
As you will soon experience, a great many things in Flask-User can be customized so it can behave exactly the way you want it to behave. But this documentation would not be complete without also discussing what its limitations are.
Flask-User has been tested with Python 2.6, 2.7, 3.3 and 3.4
Flask-User has been tested with Flask 0.10
Out-of-the box, Flask-User ships with a SQLAlchemyAdapter, allowing for support of any SQL database that SQLAlchemy v0.9 supports, including:
Drizzle, Firebird, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, Sybase
See http://docs.sqlalchemy.org/en/rel_0_9/dialects/index.html for a full list
Flask-User does abstract DB interactions through a ‘DbAdapter’ class, so support for other databases is possible by writing a DbAdapter extension class.
Though the User model table name, and the primary key field name can be customized, the remaining field names MUST be named as follows:
# User model
user.active # Required
user.username # Required only if USER_ENABLE_USERNAME is True
user.email # Required only if USER_ENABLE_EMAIL is True
user.confirmed_at # Required only if USER_ENABLE_CONFIRM_EMAIL is True
user.password # Required
user.reset_password_token # Required
user.roles # Required only if @roles_required is used
user.user_profile # Required only if a UserProfileClass is specified
Though the User model table name, and the primary key field name can be customized, the remaining field names MUST be named as follows:
# Role model
role.name # Required if @roles_required is used
Though the primary key fields of the User and Role models may be named differently than ‘id’, the primary key type MUST be an integer and can not be a compound key.