表无法迁移 - Flask-SQLAlchemy

时间:2017-07-10 05:32:25

标签: python postgresql flask-sqlalchemy

我的 models.py 文件中有以下代码行:

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

这是为我试图实施的推荐系统创建一个多对多关系表。

但是,当我运行 migrate / upgrade 命令时,Alembic不会创建表。

我正在遵循官方的Flask-SQLAlchemy教程:http://flask-sqlalchemy.pocoo.org/2.1/models/

为了清楚起见,这里是用户类:

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)
    ...

我相信我的问题可能是以下一行(摘自Flask-SQLAlchemy官方文档):

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

我试过了:

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

但同样的事情:Alembic没有确定推荐表。

非常感谢您对此的任何意见。

1 个答案:

答案 0 :(得分:1)

我有同样的问题并通过使用继承db.Model的类而不是按照烧瓶教程建议的方式声明表来解决。当我将所有内容定义为一个类时,它才起作用。 可能是alembic的一个问题。

尝试:

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'))