sqlalchemy add_column подзапрос возвращено несколько элементов - PullRequest
0 голосов
/ 25 сентября 2019

В моем файле моделей есть следующее.Я в основном использую рабочий тип как подзапрос, но это повторяется.Рабочий тип может возвращать несколько значений.Я создаю Pandas DataFrame с данными.Мне нужно, чтобы рабочий тип был одним из столбцов в кадре данных.В настоящее время я просто перебираю кадр данных и вручную заполняю столбец приведенным ниже кодом.

Код, который я сейчас использую для заполнения рабочего типа

query = Schedule.query

df = pd.read_sql(query.statement, con=db.engine)

df['worktype'] = ''
for i, r in df.iterrows(): 
    df.at[i, 'worktype'] = Schedule.query.filter(
        Schedule.id==r.id).first().worktype()

Код файла моей модели

class Schedule(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    api_fk = db.Column(db.String(17), db.ForeignKey('wells.api_pk'))
    afe_fk = db.Column(db.String(14), db.ForeignKey('excal_afe.afe_pk'))
    rig_up = db.Column(db.Date)
    rig_down = db.Column(db.Date)

    def worktype(self):
        return ' ,'.join(str(d.worktype_fk) for d in 
            scheduleWorktype.query.with_entities(
            scheduleWorktype.worktype_fk) .filter(
            scheduleWorktype.schedule_well_id==id

class scheduleWorktype(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    description = db.Column(db.String(24))
    worktype_fk = db.Column(db.String(5), db.ForeignKey('wells_worktype.worktype_pk')

В конечном итоге я хотел бы использовать этот синтаксис для add_column, аналогичного этому

query = Schedule.query.add_column(Schedule.worktype)
...