我使用SQLAlchemy查询PostgreSQL,并且只选择两列纬度和经度,并将其存储在numpy中以便进一步计算。所以,我尝试了这样的查询:
result = Places.query.filter_by(latitude, longitude)
但是这个查询没有工作并且给出了一个TYPE ERROR:
TypeError: filter_by() takes exactly 1 argument (2 given)
我想要做的就是存储两列的输出并使用以下内容将其存储为numpy:
np.array(..., dtype=float)
由于我是numpy和PostgreSQL的新手,我陷入了困境。
编辑我选择了两列:
result = Places.query.with_entities(Places.latitude, Places.longitude).all()
现在,我只需将它们存储在numpy
中答案 0 :(得分:0)
filter_by
大致相当于sql语句中的WHERE
- 它使用关键字参数来过滤搜索结果,而不是选择特定的列,例如:
Users.query().filter_by(first_name=bob, age=42)
(加入关键字参数时默认为and
,但可以包含在or_
中以更改此内容。)
您可能的意思是在查询中指定列,即:
Places.query(Places.latitude, Places.longitude)
答案 1 :(得分:0)
filter_by()
是根据条件选择一组特定的行。例如,如果您的Places
有一个名为city
的列,并且您只想获得属于伦敦城市的行,那么您可以执行以下操作:
session.query(Places).filter_by(city='London')
然而,这仍然会获取伦敦的所有列,而不仅仅是经度和纬度。在您的情况下,似乎您想要过滤掉列而不是行。因此,要获得所有行的列经度和纬度,您需要以下内容:
session.query(Places.latitude, Places.longitude)
这将返回元组。要将它存储为numpy数组列表,您可以尝试:
coordinates = []
for row in session.query(Places.latitude, Places.longitude):
cooridnates.append(np.asarray(row))
有关查询的简单示例,请参阅Object Relational Tutorial。在不知道您的实际用例的情况下,很难建议您是否真的需要一个numpy数组列表。