在For循环中读取MySQL顺序

时间:2016-08-03 11:25:43

标签: php python mysql codeigniter

我有一个包含多个表(大约100个)的数据库,其中记录基于类别存储。每个类别都是一个表格,每个表格包含多个项目。每当每个行的多个字段发生交易时,每个项目都有多个交易记录。

我需要根据条件获取每个项目的记录,并在应用程序(PHP或Python程序)中执行一些操作(例如:某种聚合)。结果再次存储在另一个数据库表中。

目前我正在为每个Item手动运行操作。通过将项目作为参数传递来执行每个项目的程序。但是我反对每天都有新的类别和新项目的情况,这让我很难调整手动执行。

以下是我尝试自动化的方式,但没有一种方法可以正常工作。

  1. 在每个项目的for循环中运行MySQL查询,但执行不起作用或仅在一个项目上执行。 这是我用于为每个项目提取数据的控制器,但这并不要求所有项目。它只适用于第一项或最后一项。 此外,我不能让循环等到数据库拉完成。

  2. for($i=0;$i<$total_items;$i++) { $data['results'] = $this->scripts_model-> run_daily_stats($item, $Parameter1, $Paramet2); //Use the Results in some operations, and then proceed with next result set. }

    1. 为每个项目创建平面文件并提取记录。这对一些现存的人有用,但根据条件从平面文件中提取记录似乎也同样困难。并且重新创建每个文件不起作用。
    2. 通过添加每30秒执行的新行来将所有项目放入批处理作业中,但需要花费大量时间来完成所有项目,并且我需要每天更新批处理文件。
    3. 这是我正在使用的示例批处理文件。现在有320行,运行约2小时。我每天都会添加多行。所以期望这会增加总执行时间。

      15 12 * * * wget 127.0.0.1/~home/scripts/update_daily/item1 >/dev/null 2>&1
      15 12 * * * sleep 30; wget 127.0.0.1/~home/scripts/update_daily/item2 >/dev/null 2>&1
      16 12 * * * wget 127.0.0.1/~home/scripts/update_daily/item3 >/dev/null 2>&1
      16 12 * * * sleep 30; wget 127.0.0.1/~home/scripts/update_daily/item4 >/dev/null 2>&1
      
      .
      .
      55 12 * * * wget 127.0.0.1/~home/scripts/update_daily/item234 >/dev/null 2>&1
      .
      .
      .
      
      4. Group multiple Items and put in a batch file, but the unable to run the program for each item.
      

      有没有办法可以在不破坏MySQL连接的情况下自动执行?请提供有助于我解决问题的任何技术或程序。

      由于

      拉​​维

1 个答案:

答案 0 :(得分:0)

在考虑这个问题之前,我建议您重新检查一下数据库的结构。如果你有100个具有相同结构(?)的表,每个表代表一个不同的类别,那么使用一个附加category列的单个表可以更简单,然后您可以使用该表来查询相关的行。

由于你没有显示你所描述的代码,所以任何人都很难说你可能做错了什么,因为我们所知道的就是你尝试过的东西&#34; don&# 39;工作&#34;。