У меня есть большая кодовая база с использованием flask и sqlalchemy, которая обращается к строке свойств, подобной следующему кодовому блоку, в десятках мест:
Вариация кода по всей кодовой базе:
jobs = job.query.all()
for each_job in jobs:
print(job.company)
Я хочу изменить компанию из строки в класс без изменения большого количества кода, поэтому я пытаюсь использовать свойства с поддержкой запросов
Текущий:
"""
" 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)
Мы еще не использовали свойства с поддержкой запросов, и мне было любопытно, есть ли недостатки.Может быть, негативное влияние на производительность в десятках мест, где это используется?Всегда ли он загружен с нетерпением, а время запроса немного больше?