Python sqlalchemy将一个结果集多次过滤为不同的结果

Python sqlalchemy将一个结果集多次过滤为不同的结果,python,sqlalchemy,Python,Sqlalchemy,我第一次使用sqlalchemy/python。到目前为止很有趣。我有一个查询,希望根据原始结果集将其拆分为单独的表 这就是目标 base_table id - val1 - val2 - class 1 xyc - abc - 1 2 lmo - nmc - 1 3 tre - abc - 2 4 hyu - pqa - 2 generate two new tables from the original class_1 id - val1 - va

我第一次使用sqlalchemy/python。到目前为止很有趣。我有一个查询,希望根据原始结果集将其拆分为单独的表

这就是目标

base_table
id - val1 - val2 - class
1    xyc  - abc  - 1
2    lmo  - nmc  - 1
3    tre  - abc  - 2
4    hyu  - pqa  - 2

generate two new tables from the original
class_1
id - val1 - val2 - class
1    xyc  - abc  - 1
2    lmo  - nmc  - 1

class_2
id - val1 - val2 - class
3    tre  - abc  - 2
4    hyu  - pqa  - 2
伪码

select * from remote_source into base_table

select * from base_table into class_1 where class = 1
select * from base_table into class_1 where class = 2
我已经构建了SQL,其中包含将进入base_表的所有数据。我只是不知道如何分离基表数据。下面是我实际拥有的代码(我已经把敏感的东西都散列出来了,但这是可行的)

我的一个想法是使用第二个引擎构建内存表

engine = create_engine('sqlite:///:memory:', echo=True)
然后使用元数据集合来构建我需要的表,但我仍然在为插入筛选基本表。我想要有一个基表的原因是,我必须进行一次DB调用,而不是多次调用,从而提高用户性能并减少DB工作


我不是在找人为我写代码的人。。。我想自己学习它,但是对于我需要的代码,我有一些想法。谢谢

在Pandas中进行所有过滤,然后从那里写入DB是否可行?

事实上,我确实找到了一个解决方案。我做事很辛苦。我在想,我必须建立一个模型,我可以加载数据,然后根据“类”列进行查询。更好的方法是使用我已经拥有的数据帧。下面是我用来获取所需信息的代码。我编写的db函数的输出包含的列比这个框架所需的多,因此我必须只获取我想要的列,然后应用过滤

hostreqs = df[['itemid','quantity','FID','primaryFacility','environment','class']]
hostreqs = hostreqs[hostreqs['class'] == 'hostReqs']
hostreqs = hostreqs[['FID','primaryFacility','environment','itemid','quantity']]
可能会有一种更干净的方法,我当然会接受这种语言的新建议。我想做的事情是将过滤器添加到第一个df切片中,而不是进行第二步,但这只会很好,因为我现在有了可以工作的代码。多谢你的建议,多斯泰兹

更新 我确实找到了更好的方法来完成上述代码 这是最后一次更新。我确实找到了将上述代码压缩成一行的方法:

df_hostreqs = df_estimate_details_base.loc[df_estimate_details_base['class'] == 'hostReqs',['FID','primaryFacility','environment','itemid','quantity']]
我可以制作一个新的数据帧。通过这种方式,我总是返回原始数据帧,以获取新的数据帧,只提取我想要的列

df_hostreqs = df_estimate_details_base.loc[df_estimate_details_base['class'] == 'hostReqs',['FID','primaryFacility','environment','itemid','quantity']]