2016-03-08 82 views
1

我試圖減少我在數據庫上運行的查詢的數量。我目前運行查詢以確定最後一天發生的交付,然後查詢每次交付兩次,查找一次帳戶信息,然後再次查找哪些項目已交付以便開具發票。我可以將最後兩組查詢合併爲一個查詢,但無法將每個投放分隔成單獨的對象。Python:解析SQL查詢

這裏的查詢,我得到:

AccountName Date ItemName Quantity Cost 

    A  3/8/16  i1   2  $1.00 
    A  3/8/16  i2   3  $2.00 
    A  3/8/16  i3   1  $3.00 
    B  3/8/16  i3   3  $3.00 
    B  3/8/16  i4   1  $4.00 
    C  3/8/16  i2   2  $2.00 

我想整理成這樣:

AccountName = [A,B,C] 
Date = [3/8/16,3/8/16,3/8/16] 
ItemDetails = [ 
      [[i1,i2,i3],[2,3,1],[$1,$2,$3]], 
      [[i3,i4],[3,1],[$3,$4]], 
      [[i2],[2],[$2]] 
      ] 
+2

你的問題是什麼?你已經嘗試了什麼?你卡在哪裏? – Chris

+0

你的方法是什麼?你想調整你的查詢或解析這個查詢的輸出嗎? – mprat

+0

請發佈您的查詢。 –

回答

1

這裏的東西應該讓你開始:

import csv 

from datetime import datetime as dt 

data = {} 
with open('path/to/file') as infile: 
    for _ in range(2): infile.readline() 
    for name, date, item, quant, cost in csv.reader(infile, delimiter='\t'): 
     if name not in data: data[name] = {} 
     if date not in data[name]: data[name][date] = {} 
     if item not in data[name][date]: data[name][date][item] = [] 
     data[name][date][item].append((quantity, cost)) 

現在,你可以按每個日期的帳戶名查詢data,查看每個項目的多少(以及以多少成本)wa s購買