sqlalchemy添加列子查询返回多个项

2024-06-26 14:05:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我的模型文件中有以下内容。我基本上是像子查询一样使用worktype,但这是重复的。Worktype可以返回多个值。我正在用这些数据创建一个数据帧。我需要worktype是dataframe中的一列。目前,我只是遍历dataframe并用下面的代码手动填充该列

我当前用于填充worktype的代码

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')

最后,我想用类似的语法拉这个来添加类似于这个的\u列

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

Tags: 代码模型iddfdbstringcolumnquery