Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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_Sql_Python 3.x_Pandas - Fatal编程技术网

Python 从大型MySQL数据库中选择数据,其中一列的值位于大型值列表中

Python 从大型MySQL数据库中选择数据,其中一列的值位于大型值列表中,python,mysql,sql,python-3.x,pandas,Python,Mysql,Sql,Python 3.x,Pandas,我通常使用Pandas将MySQL中的数据提取到数据帧中。这很有效,允许我在分析之前操作数据。这个工作流程对我来说很好 我的情况是,我有一个大型MySQL数据库(多个表将产生数百万行)。我想提取其中一列与系列中的值匹配的数据。该系列可能具有可变长度,并且可能经常更改。如何从MySQL数据库中提取数据,其中一列数据位于Pandas系列中?我探讨的两个选项是: 将MySQL中的所有数据提取到一个数据帧中(例如,使用pymysql),然后只保留我需要的行(使用df.isin() 或 使用具有多个位置的

我通常使用Pandas将MySQL中的数据提取到数据帧中。这很有效,允许我在分析之前操作数据。这个工作流程对我来说很好

我的情况是,我有一个大型MySQL数据库(多个表将产生数百万行)。我想提取其中一列与系列中的值匹配的数据。该系列可能具有可变长度,并且可能经常更改。如何从MySQL数据库中提取数据,其中一列数据位于Pandas系列中?我探讨的两个选项是:

  • 将MySQL中的所有数据提取到一个数据帧中(例如,使用pymysql),然后只保留我需要的行(使用df.isin()
  • 使用具有多个位置的查询查询MySQL数据库,其中。。。或或语句(并将其加载到数据帧中)。可以使用Python生成此查询,将列表中的项目与ORs连接起来
  • 我想这两种方法都会奏效,但它们似乎都有很高的开销。方法1下载了大量不必要的数据(可能很慢,而且可能存在更高的安全风险),而方法2只下载所需的记录,但它需要一个可能包含数千条OR语句的笨拙查询


    有更好的选择吗?如果不是,您会选择上面哪一个?

    我不熟悉panda,但严格地说,从数据库的角度来看,您可以将您的panda值插入到
    panda_值
    表中,然后将该
    panda_值
    表与您想要获取数据的表连接起来

    假设您在
    PANDA_值
    表和包含列的表上都有一些索引,那么联接将非常快

    当然,您必须有一个适当的流程来保持
    PANDA_值
    表随着业务需求的变化而更新


    希望能有帮助

    这是个好建议。但是,我需要允许多个用户访问数据库(这是学生教学作业的一部分),因此在这个阶段修改每个学生的PANDAS_值表可能有点太复杂了。但谢谢你的回答。我想说这一切都取决于你如何推动你的教学课程。如果你让所有学生在同一时间进行相同的练习,那么一旦你将教学从一点转移到另一点,你就应该是运行脚本的人。如果每个学生都跟进自己的练习,我会让每个练习准备自己的
    PANDAS_值
    填充脚本,并将
    PANDAS_值
    表定义为临时表,其内容仅在该学生课程中可用