所以我对SQLAlchemy很陌生。
我有一个模型显示表中大约有10000行。这是课堂:
class Showing(Base):
__tablename__ = "showings"
id = Column(Integer, primary_key=True)
time = Column(DateTime)
link = Column(String)
film_id = Column(Integer, ForeignKey('films.id'))
cinema_id = Column(Integer, ForeignKey('cinemas.id'))
def __eq__(self, other):
if self.time == other.time and self.cinema == other.cinema and self.film == other.film:
return True
else:
return False
如果一个新的节目还不存在的话,有谁能给我一些最快的插入方式的指导吗。我认为它稍微复杂一些,因为只有当时间、电影和电影在一个节目中是独一无二的,一个节目才是独一无二的。
我现在有这个代码:
def AddShowings(self, showing_times, cinema, film):
all_showings = self.session.query(Showing).options(joinedload(Showing.cinema), joinedload(Showing.film)).all()
for showing_time in showing_times:
tmp_showing = Showing(time=showing_time[0], film=film, cinema=cinema, link=showing_time[1])
if tmp_showing not in all_showings:
self.session.add(tmp_showing)
self.session.commit()
all_showings.append(tmp_showing)
这很有效,但似乎很慢。任何帮助都非常感谢。
如果任何此类对象基于列的组合是唯一的,则需要将它们标记为组合主键。将
primary_key=True
关键字参数添加到这些列中的每一列,同时删除您的id
列:这样,数据库可以更有效地处理这些行(不需要递增列),SQLAlchemy现在自动知道两个
Showing
实例是否相同。我相信你可以把新的
Showing
合并到会话中:相关问题 更多 >
编程相关推荐