通过python查询mysql数据库,查看上个月,上周,特定日期等的总数

时间:2016-11-27 09:40:18

标签: python mysql

我有一个包含以下数据的SQL表:

select day, counter from table1 where day LIKE '%201601%';
+----------+---------+
| day      | counter |
+----------+---------+
| 20160101 |  125777 |
| 20160102 |   31720 |
| 20160105 |   24981 |
| 20160106 |  240366 |
| 20160107 |  270560 |
| 20160108 |  268788 |
| 20160109 |  254286 |
| 20160110 |  218154 |
| 20160111 |  250186 |
| 20160112 |   94532 |
| 20160113 |   71437 |
| 20160114 |   71121 |
| 20160115 |   71135 |
| 20160116 |   71325 |
| 20160117 |  209762 |
| 20160118 |  210305 |
| 20160119 |  257627 |
| 20160120 |  306353 |
| 20160121 |  214687 |
| 20160122 |  214680 |
| 20160123 |  149844 |
| 20160124 |  133741 |
| 20160125 |   82404 |
| 20160126 |   71403 |
| 20160127 |   71437 |
| 20160128 |   72005 |
| 20160129 |   71417 |
| 20160130 |       0 |
| 20160131 |   69937 |
+----------+---------+

我有一个python脚本,我在

运行

python myapp.py January

1月变量包括以下查询:

January = """select day, counter from table1 where day LIKE '%201601%';"""

我想要做的是必须使用不同的标志运行脚本并让脚本计算所有日期的总和:

last month,
this month,
last week,
last two weeks
specific month.

目前我在2016年有不同的变量,这样脚本会变得很大,我相信有更简单的方法可以做到这一点。

cursor = db.cursor() cursor.execute(eval(sys.argv[1])) display = cursor.fetchall() MonthlyLogs = sum(int(row[1]) for row in display)

关键是我希望看到数据之间存在差异。我的总体目标是稍后在php中显示这些数据,但是现在我希望将它写入一个文件,目前正在写入文件。

实现这一目标的最佳方法是什么?

谢谢,

培养箱

1 个答案:

答案 0 :(得分:0)

对于第一部分,您可以使用datetime访问当前月份和年份。

from datetime import datetime

currentMonth = datetime.now().month
currentYear = datetime.now().year
parameter = str(currentYear) + str(currentMonth)

在查询中传递此参数应该有效。

对于第二个,您可以定义一个带有标志的函数,当设置为1时,将如上所述设置参数,否则参数的值将为sys.argv [1]。