动态搜索返回的MySQL数据

时间:2015-09-17 00:31:30

标签: python mysql forms flask

如何动态搜索MySQL数据?具体来说,我想查询一个表,例如:

mysql> select * from points where LAT != 0.0

之后我想查询上一个查询返回的信息:

mysql> select LAT, LON, FILE from points where LAT > 30.457835

如何查询以前的结果,而不是每次都搜索整个数据库?

我想要达到的目的是在Flask中集成动态搜索表单,其中表单中选择的每个字段都会缩小网页上显示的结果。在我看来,这种事情一直在发生,例如在图书馆数据库中,甚至是亚马逊。您添加的每个新条件是否会在数据库中创建一个全新的搜索字符串,或者您是否可以暂时将此信息存储在内存中并查询以前的结果?

我可以看到这对于怪异的数据库会有多大问题,但我的项目很少能够达到规模。

如果我的问题不在此处,请告诉我,以便我可以改写。我最终将通过flask / python工作,但我觉得我应该先了解MySQL的工作原理。烧瓶中的简单搜索表单和返回结果很简​​单,但是以合理的方式使用户友好,现在正在逃避我。

感谢。

2 个答案:

答案 0 :(得分:1)

这里有三个选项:

首先(而不是一个很好的解决方案)是从查询结果中选择:

select * from (
 select LAT, LON, FILE from points where LAT > 30.457835
)
 where LAT != 0.0;

其次(效率更高)是将搜索条件合并到一个查询中:

select LAT, LON, FILE from points where LAT > 30.457835 and  LAT != 0.0;

然而在你的例子中,这将是毫无意义的,因为任何大于30.457835的东西肯定不会等于零。

第三个(并且效率极低)选项是将第一个查询的结果写入临时表,然后查询临时表。这方面的SQL有点复杂,我建议只有在对生成的临时表运行多个查询时才这样做。

答案 1 :(得分:1)

使用子查询:

select sq.LAT, sq.LON, sq.FILE 
from (select * from points where LAT != 0.0) as sq
where sq.LAT > 30.457835