我有一个使用flask和sqlalchemy的大型代码库,可在几十个地方访问类似于以下代码块的属性字符串:
整个代码库中的代码变化:
jobs = job.query.all()
for each_job in jobs:
print(job.company)
我想在不更改大量代码的情况下将公司从字符串更改为类,所以我尝试使用query enabled properties
当前
:"""
" Job model
"""
class job(db.Model):
id = db.Column('id', db.Integer, primary_key = True)
role = db.Column(db.Text)
company = db.Column(db.Text)
建议:
"""
" Job model
"""
class job(db.Model):
id = db.Column('id', db.Integer, primary_key = True)
role = db.Column(db.Text)
company_id = db.Column(db.Integer, db.ForeignKey('company.id'))
tied_company = db.relationship('contact', lazy='select')
def _get_company(self):
theCompany = company.query.with_parent(self).all()
return theCompany.name
company = property(_get_company)
"""
" Company model
"""
class job(db.Model):
id = db.Column('id', db.Integer, primary_key = True)
name = db.Column(db.Text)
我们尚未使用启用查询的属性,我很好奇是否存在缺点。可能会对使用数十个地方的性能产生负面影响?它总是总是热切地加载,您得到的查询时间会略长吗?