时间:2010-07-26 17:54:27

标签: python dictionary

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

这是一个老人,但是金色的。我来寻找答案,并认为我会分享我的学习。我想通过屏幕ID,采取的操作和记录的日期来总结用户操作。该原型使用Oracle XE版本,Python 3.5(64位)和pyodbc软件包。

import pyodbc

spam = {}

sqlQuery = ' \
    SELECT actionexecutedon, screenid, eventtype \
    FROM bmx_production_history \
'

connection= pyodbc.connect('dsn=XE;uid=hr;pwd=hr')

try:
        cursor = connection.cursor()
        cursor.execute(sqlQuery)
        records = cursor.fetchall()
        for record in records:

                spam.setdefault(record.SCREENID, {})

                spam[record.SCREENID].setdefault(record.EVENTTYPE, {})

                spam[record.SCREENID][record.EVENTTYPE].setdefault(record.ACTIONEXECUTEDON.strftime('%Y-%m-%d'), 0)
                spam[record.SCREENID][record.EVENTTYPE][record.ACTIONEXECUTEDON.strftime('%Y-%m-%d')]+=1

        print(spam)

finally:
        connection.close()

n.b。生产版本将汇总推回到Oracle引擎, - 使用GROUP函数计算每个屏幕每天的操作数 - 但嵌套字典的使用仍然(我认为)对可能的问题的有效响应使用一些旅行者尚未通过这种方式。运气。