我正在连接到Oracle数据库。
此表与其他2个表相关。
主表的类模型:
class EventModel(db.Model):
"""
Model for the Generic Calendar RC_CAL table
Has all assumed methods for getting, inserting, updating, and deleting data needed for anything involving this table
JSON creator method
"""
__tablename__ = 'RC_CAL'
RC_ID = db.Column(db.Integer, primary_key=True)
PRODUCT_ID = db.Column(db.Integer)
RELEASE_ID = db.Column(db.Integer)
RCPM_ID = db.Column(db.Integer)
FIT_DTTM = db.Column(db.String(25))
DATACTR_ID = db.Column(db.String(10))
COMMENT_TXT = db.Column(db.String(500))
DESCR_TXT = db.Column(db.String(300))
EVENTCMPLT_FLG = db.Column(db.String(1))
EVENTCMPLTONTM_FLG = db.Column(db.String(1))
URLS = db.Column(db.String(4000))
CREATE_DT = db.Column(db.DateTime)
MODIFIED_DT = db.Column(db.DateTime)
generic_event = db.relationship(
"GenericEventModel",
back_populates='rc_event',
lazy='joined',
cascade="all, delete, delete-orphan"
)
history_list = db.relationship(
"HistoryModel",
back_populates='rc_event',
lazy='joined',
cascade="all, delete, delete-orphan"
)
@classmethod
def find_by_active_type(cls, is_active):
return cls.query.join(GenericEventModel).filter(GenericEventModel.ACTIVE_YN == is_active)
class方法是我尝试调用的方法。查询非常简单,但是由于某种原因,api获取数据需要14到15秒钟。
如果我这样做:
return cls.query.all()
总共大约需要5秒钟。它应该以当前格式返回约1500条记录。
现在我可以执行非SQL路由并执行以下操作:
def find_by_active_type(cls, is_active):
events = cls.query.all()
event_list = []
for event in events:
json = event.json()
if json['active'] == is_active:
event_list.append(event)
return event_list
但是我真的很想使用数据库资源(不同的机器)。我感谢任何人帮助解决此问题。我遇到类似的情况正在影响我的另一个查询。