因此,我目前正在尝试使用flask restful为后端构建一个新的应用程序,我仍然在学习,因为所有这些对我来说都是全新的。我已经用几个不同的mySQL表设置了所有内容,下面详细介绍了它们之间的关系,所有内容似乎都运行良好,只是插入新数据的过程非常缓慢
下面是我对当前设置的(简化)解释。基本上,我首先有一张航班表
class FlightModel(db.Model):
__tablename__ = "Flights"
flightid = db.Column(db.Integer, primary_key = True, nullable=False)
[Other properties]
reviewid = db.Column(db.Integer, db.ForeignKey('Reviews.reviewid'), index = True, nullable = False)
review = db.relationship("ReviewModel", back_populates="flight", lazy='joined')
然后,该表指向一个Reviews表,我在其中存储用户留下的全局评论
class ReviewModel(db.Model):
__tablename__ = "Reviews"
reviewid = db.Column(db.Integer, primary_key = True, nullable = False)
[Other properties]
depAirportReviewid = db.Column(db.Integer, db.ForeignKey('DepAirportReviews.reviewid'), index=True, nullable = False)
arrAirportReviewid = db.Column(db.Integer, db.ForeignKey('ArrAirportReviews.reviewid'), index=True, nullable = False)
airlineReviewid = db.Column(db.Integer, db.ForeignKey('AirlineReviews.reviewid'), index=True, nullable = False)
flight = db.relationship("FlightModel", uselist=False, back_populates="review", lazy='joined')
depAirportReview = db.relationship("DepAirportReviewModel", back_populates="review", lazy='joined')
arrAirportReview = db.relationship("ArrAirportReviewModel", back_populates="review", lazy='joined')
airlineReview = db.relationship("AirlineReviewModel", back_populates="review", lazy='joined')
然后,可以在另一个表(例如,在下面的DepAirportReviews表中:此级别共有三个表)中存储关于航班不同方面的更详细的审查
class DepAirportReviewModel(db.Model):
__tablename__ = "DepAirportReviews"
reviewid = db.Column(db.Integer, primary_key = True, nullable = False)
[Other properties]
review = db.relationship("ReviewModel", uselist=False, back_populates="depAirportReview", lazy='joined')
插入过程很慢(每次飞行插入通常需要1秒,当我尝试批量插入几百个时,这是一个问题)
我理解这是因为所有这些关系以及它所暗示的所有数据库访问,以便为不同的表检索不同的ID。对吗?我可以做些什么来解决这个问题,或者我需要重新设计表来删除其中的一些关系吗
谢谢你的帮助
编辑:显示直接执行的SQL显示了我的预期:每次插入总共执行7个简单查询,每次执行约300毫秒。它相当长,我想主要是由于到达服务器的时间。除了保留一些外键什么都没做,对吗
目前没有回答
相关问题 更多 >
编程相关推荐