flask sqlalchemy db.create_all()不创建辅助表/辅助表

flask sqlalchemy db.create_all()不创建辅助表/辅助表,flask,flask-sqlalchemy,Flask,Flask Sqlalchemy,我在应用程序中使用flask sqlalchemy,并创建了以下模型。我正在为用户和订阅表创建多对多关系,并尝试将助手表创建为用户订阅。 创建这个模型之后,当我在命令行中运行db.create\u all()时,它只在数据库中创建了3个表(表中有db.model),但根本没有创建帮助表(用户订阅)。它也没有给出任何错误 有人能告诉我这里出了什么问题吗 我已经在google和stackoverflow上搜索了很多,但我找不到任何人在没有创建helper表(通过db.table())的情况下遇到这个

我在应用程序中使用flask sqlalchemy,并创建了以下模型。我正在为用户和订阅表创建多对多关系,并尝试将助手表创建为用户订阅。 创建这个模型之后,当我在命令行中运行db.create\u all()时,它只在数据库中创建了3个表(表中有db.model),但根本没有创建帮助表(用户订阅)。它也没有给出任何错误

有人能告诉我这里出了什么问题吗

我已经在google和stackoverflow上搜索了很多,但我找不到任何人在没有创建helper表(通过db.table())的情况下遇到这个问题的答案。 有一个问题来自某个人,他们有一些类似的问题,但他正面临着他想要跨多个数据库执行的操作。 我在同一个数据库上做

class Subscription(db.Model):
    __tablename__ = "subscription"
    id = db.Column(db.Integer, primary_key=True)
    subscription_name = db.Column(db.String(100), unique=True, nullable=False)


User_Subscription = db.table('user_subscription',
    db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
    db.Column('subscription_id', db.Integer, db.ForeignKey('subscription.id')),
    db.Column('subscription_status', db.String(20), nullable=False, default='Active'))

class Users(db.Model, UserMixin):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    firstname = db.Column(db.String(50), unique=False, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    date_created = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    date_updated = db.Column(db.DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
    user_status_id = db.Column(db.String(2), db.ForeignKey('user_status.id'))
    subscriptions = db.relationship('Subscription', secondary=User_Subscription, backref= db.backref('subscriptions', lazy=True))

    def __repr__(self):
        return f"Users('{self.firstname}', '{self.email}')"

class User_Status(db.Model):
    __tablename__ = "user_status"
    id = db.Column(db.String(2), primary_key=True)
    status_desc = db.Column(db.String(20), unique=True, nullable=False)
    users_status = db.relationship('Users', backref='usersofstatus')
预期结果-在数据库中创建4个表

class Subscription(db.Model):
    __tablename__ = "subscription"
    id = db.Column(db.Integer, primary_key=True)
    subscription_name = db.Column(db.String(100), unique=True, nullable=False)


User_Subscription = db.table('user_subscription',
    db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
    db.Column('subscription_id', db.Integer, db.ForeignKey('subscription.id')),
    db.Column('subscription_status', db.String(20), nullable=False, default='Active'))

class Users(db.Model, UserMixin):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    firstname = db.Column(db.String(50), unique=False, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    date_created = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    date_updated = db.Column(db.DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow)
    user_status_id = db.Column(db.String(2), db.ForeignKey('user_status.id'))
    subscriptions = db.relationship('Subscription', secondary=User_Subscription, backref= db.backref('subscriptions', lazy=True))

    def __repr__(self):
        return f"Users('{self.firstname}', '{self.email}')"

class User_Status(db.Model):
    __tablename__ = "user_status"
    id = db.Column(db.String(2), primary_key=True)
    status_desc = db.Column(db.String(20), unique=True, nullable=False)
    users_status = db.relationship('Users', backref='usersofstatus')

实际结果-仅创建了3个表。未创建用户订阅(用于多对多关系的帮助表)。

我是SQLAlchemy的新手,但在创建用户订阅时,您似乎没有从db.Model继承。为什么不让它成为一门课呢

class User_Subscription(db.Model): 

经过几个小时的挫折之后,我发现我有一个打字错误,我使用的是db.table而不是db.table。因此,请发布此答案,以防它对某人有所帮助。

我对flask sqlalchemy不熟悉,因此我在上阅读了他们的官方文档,其中写道“对于此帮助表,强烈建议不要使用模型,而应使用实际表:”。另外,我在看视频,他们也没有使用db.Model。我不知道它为什么不创建那个表。