简体   繁体   中英

Flask security - could not assemble any primary key columns for mapped table 'user'

Question :

I am building a Flask app and trying to implement flask-security.

I am currently getting the error:

sqlalchemy.exc.ArgumentError: Mapper mapped class User->user could not assemble any primary key columns for mapped table 'user'

How do I resolve this error and is my set up correct for the security and user_datastore objects?

Project structure :

/app
  models.py
  __init.py__
run.py

The run.py file simple calls create app from the _ _ init _ _.py file:

from flask import Flask
from flask_security import Security
from app.models import db, user_datastore


def create_app():

    app = Flask(__name__)
    app.config.from_object('config')
    security = Security(app, user_datastore)

    # Initialise extensions
    db.init_app(app)

    with app.app_context():

        # Import parts of the application

        # Register Blueprints

        # Create sql tables for data models
        db.create_all()

    return app

And the models.py file is:


from flask_sqlalchemy import SQLAlchemy
from flask_security import SQLAlchemyUserDatastore

db = SQLAlchemy()


roles_users = db.Table('roles_users',
                       db.Column('user_id', db.Integer, db.ForeignKey('user_id')),
                       db.Column('role_id', db.Integer, db.ForeignKey('role_id')))


class User(db.Model):
    id = db.Column(db.Integer, prinary_key=True)
    email = db.Column(db.String(100), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean)
    confirmed_at = db.Column(db.DateTime)
    roles = db.relationship(
        'Role',
        secondary=roles_users,
        backref=db.backref('users', lazy='dynamic')
    )


class Role(db.Model):
    id = db.Column(db.Integer, prinary_key=True)
    name = db.Column(db.String(40))


user_datastore = SQLAlchemyUserDatastore(db, User, Role)

Could be a cut and paste error- but you misspelled 'primary_key'

Also which Flask Security are you using - if Flask-Security-Too you are missing some required columns

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM