在我添加了关联表之后,没有任何内容提交到数据库中



我正在构建一个应用程序,用于在活动中对啤酒进行评级。可以评分的啤酒应该添加到一个表中,事件也应该添加到另一个表,啤酒和事件应该连接起来。因为在一个活动中,不止一种啤酒可以品尝,而且一种啤酒也可以在多个活动中品尝,所以我想建立一种m:n关系。我用python3做这件事,我用烧瓶和烧瓶sqlalchemy。我使用的是sqlite数据库。

我制作的沙发模型是这样的:

#association table
event_beer = db.Table('event_beer',
db.Column('event_id', db.Integer, db.ForeignKey('event.id'), primary_key=True),
db.Column('beer_id', db.Integer, db.ForeignKey('beer.id'), primary_key=True))
class Event(db.Model):
__tablename__ = 'event'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
def __str__(self):
return f'{name}'
class Beer(db.Model):
__tablename__ = 'beer'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
event = db.relationship('Event', secondary=event_beer)
def __str__(self):
return f'{self.name}, {self.event}'

为了简单起见,我省略了一些没有外键的列。当我想保存记录的数据时执行的代码是:

event = Event(name = 'event_name')
beer1 = Beer(name = 'beerone')
beer2 = Beer(name = 'beertwo')
beer1.event.append(event)
beer2.event.append(event)
db.session.commit()

要保存的值不是字符串,但为了简单起见,我替换了它们。但是这些值是存在的,并且在数据库中没有任何空行。

我不知道是我把模型设置错了,还是在提交时出现了问题。如有任何帮助,我们将不胜感激。

非常抱歉,我刚刚发现问题。很明显,我忘记了将项目添加到会话。所有遗漏的都是db.session.add(event)。我想弄清楚这个问题至少有6个小时了,但在我把问题发到stackoverflow后我才发现。

相关内容

最新更新