2017-07-10 8 views
0

je la ligne de code suivante dans mon models.py fichier:Tableau non migration - Flask-SQLAlchemy

referalls = db.table('referrals', 
       db.Column('referrer', db.String(64), db.ForeignKey('User.email')), 
       db.Column('referral', db.String(64), db.ForeignKey('User.email')) 
       ) 

est de créer un grand nombre -à-plusieurs table pour un renvoi système que j'essaie de mettre en œuvre.

Toutefois, lorsque j'exécute la commande migrate/upgrade, Alembic ne crée pas la table.

que je suis le tutoriel officiel Flask-SQLAlchemy: http://flask-sqlalchemy.pocoo.org/2.1/models/

Par souci de clarté, voici l'utilisateur classe:

class User(UserMixin, db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(64), unique=True, index=True) 
    username = db.Column(db.String(64), unique=True, index=True) 
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) 
    password_hash = db.Column(db.String(128)) 
    confirmed = db.Column(db.Boolean, default=False) 
    name = db.Column(db.String(64)) 
    location = db.Column(db.String(64)) 
    about_me = db.Column(db.Text()) 
    member_since = db.Column(db.DateTime(), default=datetime.utcnow) 
    last_seen = db.Column(db.DateTime(), default=datetime.utcnow) 
    ... 

Je crois que mon problème est peut-être la ligne suivante (tirée de la documentation officielle Flask-SQLAlchemy):

tags = db.relationship('Tag', secondary=tags, 
     backref=db.backref('pages', lazy='dynamic')) 

j'ai essayé:

referalls = db.relationship('User', secondary=referalls, 
          backref=db.backref('users', lazy='dynamic')) 

Mais même chose: Alambic est pas identifier les références tableau.

Toute contribution à ce sujet est grandement appréciée.

Répondre

1

J'ai eu le même problème et résolu en utilisant une classe héritant de db.Model au lieu de déclarer une table comme le suggère le tutoriel de flask. Quand j'ai défini tout en classe, ça a juste marché. Probablement son un problème avec l'alambic.

Essayez:

class Referalls(db.Model): 
    __tablename__ = 'referalls' 
    referrer = db.Column(db.String(64), db.ForeignKey('User.email')) 
    referral = db.Column(db.String(64), db.ForeignKey('User.email'))