Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在SQLAlchemy中将带有in子句的数据库查询转换为列表列表_Python_Sqlalchemy - Fatal编程技术网

Python 如何在SQLAlchemy中将带有in子句的数据库查询转换为列表列表

Python 如何在SQLAlchemy中将带有in子句的数据库查询转换为列表列表,python,sqlalchemy,Python,Sqlalchemy,我有以下SQLAlchemy数据库查询 test_query = Unit.query.filter(Unit.id_1.in_(('3D0U|1|A|G|1', '3D0U|1|A|C|160'))) 我希望此查询的结果是一个列表,其中的行对应于in子句中的每个元素,作为一个单独的列表。目前,我得到了一个列表中的所有行 这就是我尝试过的 result = [] for row in test_query: result.append[(row.id_2)] 当我打印出结果时,这就是

我有以下SQLAlchemy数据库查询

test_query = Unit.query.filter(Unit.id_1.in_(('3D0U|1|A|G|1', '3D0U|1|A|C|160')))
我希望此查询的结果是一个列表,其中的对应于in子句中的每个元素,作为一个单独的列表。目前,我得到了一个列表中的所有行

这就是我尝试过的

result = []
for row in test_query:
    result.append[(row.id_2)]
当我打印出结果时,这就是我得到的结果

["3D0X|1|A|C|160", "4ERJ|1|A|C|160", "4ERL|1|A|C|160", "3D0X|1|A|G|1", "4ERJ|1|A|G|1", "4ERL|1|A|G|1"]
所需输出为:

[["3D0X|1|A|C|160", "4ERJ|1|A|C|160", "4ERL|1|A|C|160"], ["3D0X|1|A|G|1", "4ERJ|1|A|G|1", "4ERL|1|A|G|1"]]
单位表中的样本数据如下所示

"id_1","chain_1","pdb_id_1","id_2","chain_2","pdb_id_2"
"3D0U|1|A|G|1","A","3D0U","3D0X|1|A|G|1","A","3D0X"
"3D0U|1|A|G|1","A","3D0U","4ERJ|1|A|G|1","A","4ERJ"
"3D0U|1|A|G|1","A","3D0U","4ERL|1|A|G|1","A","4ERL"
"3D0U|1|A|C|160","A","3D0U","3D0X|1|A|C|160","A","3D0X"
"3D0U|1|A|C|160","A","3D0U","4ERJ|1|A|C|160","A","4ERJ"
"3D0U|1|A|C|160","A","3D0U","4ERL|1|A|C|160","A","4ERL"

感谢您的帮助。谢谢

这可以通过以下方式解决:首先按查询中的
Unit.id_1
排序,然后

result=[[unit.id_2 for units in units]for id_1,units in itertools.groupby(test_查询,lambda x:x.id_1)]
对于postgresql,还有一个
sqlalchemy.func.array\u agg
,可以用来构造一个由
id\u 1
分组的
id\u 2
数组


作为参考,描述了itertools.groupby的功能。

除非最近添加了此功能,否则SQLAlchemy无法为您执行此操作,您需要根据unit table中的样本数据自行对SQLAlchemy返回的数据进行后期处理。我认为,如果可能,最好花更多时间设计数据库。例如,是否应该有带有属性
id
name
的模型
Chain
(即表
Chain
),然后引用这些条目(整型)。这是否取决于python版本?它是否适用于Python2.7?Hakala得到一个TypeError:“function”对象不可用iterable@TheEmperor我以错误的顺序编写了参数当我尝试此操作时,我得到了TypeError:IsnotJSON serializable。有没有办法解决这个问题?@我想我应该为id_1,itertools.groupby(test_query,lambda x:x.id_1)编写
result=[[unit.id_2 for unit in units]的