Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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 存储MySql查询结果以加快重用_Python_Mysql_Database_Pandas - Fatal编程技术网

Python 存储MySql查询结果以加快重用

Python 存储MySql查询结果以加快重用,python,mysql,database,pandas,Python,Mysql,Database,Pandas,我正在用python分析MySql数据库中的数据。我在数据库中查询大约200000行数据,然后使用Pandas在python中进行分析。我经常对相同的数据进行多次迭代,更改不同的变量、参数等等。每次运行程序时,我都会查询远程数据库(大约10秒的查询),然后在程序完成时丢弃查询结果。我想将上一次查询的结果保存在本地文件中,然后每次运行程序时检查查询是否相同,然后只使用保存的结果。我想我可以将Pandas数据帧写入csv,但是有更好/更容易/更快的方法吗 如果出于任何原因MySQL没有帮助,那么我建

我正在用python分析MySql数据库中的数据。我在数据库中查询大约200000行数据,然后使用Pandas在python中进行分析。我经常对相同的数据进行多次迭代,更改不同的变量、参数等等。每次运行程序时,我都会查询远程数据库(大约10秒的查询),然后在程序完成时丢弃查询结果。我想将上一次查询的结果保存在本地文件中,然后每次运行程序时检查查询是否相同,然后只使用保存的结果。我想我可以将Pandas数据帧写入csv,但是有更好/更容易/更快的方法吗

如果出于任何原因MySQL没有帮助,那么我建议以HDF5格式或Feather格式保存最新的结果集。两种格式都非常快。您可以在此处找到一些演示和测试:


只需使用pickle将数据帧写入一个文件,然后将其读回(“取消pickle”)


这将是一个“简单的方法”。

200K不是很多数据。但迭代总是很慢,这就是为什么它不用于查询、报告或分析数据。设计良好的应用程序生成的数据库报告在处理之前不会加载内存中的所有数据。要么创建适当的查询和索引,无需迭代即可返回所需的结果,要么创建一个单独的报告数据库,其模式适合于分析,例如星型模式。将其写入本地文件,然后读取该文件。想不出比这更容易的了。@RobertB事实上,它又差又慢。当您有一个数据库可以比任何不使用任何优化访问的迭代更快地执行基于集合的操作时,为什么要在内存中迭代呢?在10秒内,数据库将生成最终结果。现在只有20万罗,你假设他知道如何用SQL重写他的分析。你的建议很好,但我只是回答他的问题。如果他对Python代码有投资,但没有时间或专门知识用SQL重写代码,那么他的想法可能是一种快速而肮脏的加速方式。