简体   繁体   English

表未迁移-Flask-SQLAlchemy

[英]Table not migrating - Flask-SQLAlchemy

I have the following line of code in my models.py file: 我的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'))
                 )

This is to create a many-to-many relationship table for a referral system I'm trying to implement. 这是为我要实现的引荐系统创建多对多关系表。

However, when I run my migrate/upgrade command, Alembic is not creating the table. 但是,当我运行migration / upgrade命令时,Alembic并未创建表。

I'm following the official Flask-SQLAlchemy tutorial: http://flask-sqlalchemy.pocoo.org/2.1/models/ 我正在关注Flask-SQLAlchemy官方教程: http : //flask-sqlalchemy.pocoo.org/2.1/models/

For clarity's sake, here's the User class: 为了清楚起见,下面是User类:

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

I believe my problem might be the following line (pulled from the official Flask-SQLAlchemy documentation): 我相信我的问题可能是以下几行(从Flask-SQLAlchemy官方文档中提取):

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

I tried: 我试过了:

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

But same thing: Alembic's not identifying the referrals table. 但同样的事情:Alembic无法识别推荐表。

Any input on this is greatly appreciated. 对此表示感谢。

I had the same problem and solved by using a class inheriting db.Model instead of declaring a table the way the flask tutorial suggests. 我遇到了同样的问题,并通过使用继承db.Model的类解决了问题,而不是按照烧瓶教程的建议声明表。 When I defined everything as a class it just worked. 当我将所有内容都定义为一个类时,它就起作用了。 Possibly its a problem with alembic. 可能这是蒸馏器的问题。

Try: 尝试:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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