首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在不重新创建的情况下将数据动态加载到python数据结构中?

有没有办法在不重新创建的情况下将数据动态加载到python数据结构中?
EN

Stack Overflow用户
提问于 2010-01-09 18:07:21
回答 4查看 641关注 0票数 0

我有一个从数据库表构建列表并实时运行的进程。新数据不时被添加到数据库表中。不时地从表中查询数据既麻烦又费时,这需要与possible.What一样的实时性才是解决问题的正确方法?

该过程如下

list从执行2-4秒的SQL查询中获取生成。

进程A使用List执行某些功能

数据会不断添加到数据库表中。我们只需要将新的数据附加到列表中,流程A就会实时使用这些数据。

我还没有尝试编写任何代码,我仍然不确定它应该是什么样的设计。Python是我们唯一可以使用的语言,因为已经部署了10,000行Python代码作为系统的一部分。

有人能帮助我正确的方法,模块等吗?

编辑

进程A是程序中的一个过程。我正在考虑的Pusedo代码是这样的

代码语言:javascript
复制
def processA(list):
   while 1:
      parse file 
      do something

def run():
   list = generate list from run sql query
   processA(list)


if __name__=="__main__":
   run()
EN

回答 4

Stack Overflow用户

发布于 2010-01-09 18:22:48

如果您上次查询之后出现的所有新数据,那么再次查询数据库不是很有意义吗?类似于key > highest_key_in_listdate > highest_date_in_list的东西,而不是再次加载整个程序。

票数 0
EN

Stack Overflow用户

发布于 2010-01-09 18:22:57

这感觉很麻烦,但是在最初的查询中创建一个临时表来保存结果。向表中添加一个列,它是一个递增的数字,我将调用id。在表中添加一个触发器,以更新临时表的数据更改。返回数据库,只查询id大于初始拉力中最后一个元素的记录。因为这将是一个更快的查询,它应该使您尽可能接近实时。重用持久连接也可能略有帮助。

我还会检查您的数据库是否为这个查询建立了良好的索引,2-4秒似乎是很长的时间。也许您还可以对查询进行一些优化。

票数 0
EN

Stack Overflow用户

发布于 2010-01-09 18:27:51

对不起,很难推断出你到底想做什么。

有一点不太清楚:

进程(python脚本)是吗?要运行

  • 连续地(类似守护进程),在这种情况下,如果数据集相对较小,则不需要将其存储在任何地方。您可以将其保存在memory.
  • periodically (cron作业)中,在这种情况下,您确实需要一种方法来序列化每次调用之间的数据。您可以为此使用泡菜,但是我不确定与从数据库中检索整个数据集相比,去泡菜是否会花费更少的时间。

重置取决于数据库架构和数据添加/更新的方式。插入后会不会发生变异?如果没有,您只能选择数据“自上次调用”,方法是使用表中的时间戳字段(如果有时间戳字段)或标识字段(实际上不可靠)。它在MySQL中是有点可靠的,但同样也不是很可靠)。

如果数据可能被更新,那么您将不得不重新读取整个数据集(除非您有方法只选择新的/更新的条目)。

至于2-4秒,-可能有很多原因说明为什么需要这么长时间--您是否正在运行查询,其中提到了未索引字段?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2034338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档