python-3.x - 添加关联表后,没有任何内容提交到数据库中
问题描述
我正在构建一个用于在活动中对啤酒进行评级的应用程序。可以评价的啤酒应该添加到一个表中,也应该将事件添加到另一个表中,并且应该连接啤酒和事件。由于在一个活动中要品尝的不仅仅是一种啤酒,而且可以在多个活动中品尝一种啤酒,我想建立 am:n-relationship。我正在使用 python3 执行此操作,我使用的是 flask 和 flasksqlalchemy。我正在使用一个 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 后我才发现它。
推荐阅读
- python - Spark 计划中的 Firebase 存储:要计费的项目与缺席的计费帐户相关联
- sql - 是否可以从其他表属性派生属性
- sql - 如何修复这个缓慢的 Postgres 选择查询
- ios - 如何在 MWPhotoBrowser swift iOS 中显示手机的图库
- cassandra - cassandra - 在某个条件下(在哪里)将行从一个表移动到另一个表
- mysql - 新数据库慢很多
- amazon-web-services - AWS DynamoDB 使用多个区域以获得更好的安全性?
- html - 使用包含缩略图和带有文本的 div 的百分比宽度的 Flex 项目不会随其父项调整大小?
- spring-integration - Spring Batch 分区作业 - MessageChannelPartitionHandler 的问题
- inno-setup - 非提升模式下卸载后如何打开网站?