2016-07-26 20 views
0

質問のタイトルは申し訳ありませんが、私は必然的に助けが必要です:なぜ、私のコードはブロック全体ではなく、whileループの1行だけでループしますか?

私の目標は、exacttarget salesforce marketingクラウドAPIのすべてのレコードを取得するスクリプトを作成することです。私は正常にAPI呼び出しをセットアップし、DataFramesにデータを正常にインポートしました。

私は、 "MoreDataAvailable"の読み込みを中断して、 "Results_Message"が "MoreDataAvailable"の読み込みを停止し、どちらかから日付を制御できるロジックを設定する必要があるまで、 API呼び出しを呼び出すか、DataFrameを解析します。

「印刷Results_Messageは、」文字列「MoreDataAvailable」ここ

私のコードは、これまでのところで周りをループしているところ私のコードは、あなたがパースで私の試みを見ることができますライン94と95に、ライン44で立ち往生されます

import ET_Client 
import pandas as pd 


AggreateDF = pd.DataFrame() 
Data_Aggregator = pd.DataFrame() 
#Start_Date = "2016-02-20" 
#End_Date = "2016-02-25" 
#retrieveDate = '2016-07-25T13:00:00.000' 
Export_Dir = 'C:/temp/' 


try: 

    debug = False 
    stubObj = ET_Client.ET_Client(False, debug) 






    print '>>>BounceEvents' 
    getBounceEvent = ET_Client.ET_BounceEvent() 
    getBounceEvent.auth_stub = stubObj 
    getBounceEvent.search_filter = {'Property' : 'EventDate','SimpleOperator' : 'greaterThan','Value' : '2016-02-22T13:00:00.000'} 
    getResponse1 = getBounceEvent.get() 
    ResponseResultsBounces = getResponse1.results 
    Results_Message = getResponse1.message 
    print(Results_Message) 
    #EventDate = "2016-05-09" 
    print "This is orginial " + str(Results_Message) 
    #print ResponseResultsBounces 

    i = 1 
    while (Results_Message == 'MoreDataAvailable'): 
     #if i > 5: break 
     print Results_Message 
     results1 = getResponse1.results 
     #print(results1) 
     i = i + 1 
     ClientIDBounces = [] 
     partner_keys1 = [] 
     created_dates1 = [] 
     modified_date1 = [] 
     ID1 = [] 
     ObjectID1 = [] 
     SendID1 = [] 
     SubscriberKey1 = [] 
     EventDate1 = [] 
     EventType1 = [] 
     TriggeredSendDefinitionObjectID1 = [] 
     BatchID1 = [] 
     SMTPCode = [] 
     BounceCategory = [] 
     SMTPReason = [] 
     BounceType = [] 

     for BounceEvent in ResponseResultsBounces: 
      ClientIDBounces.append(str(BounceEvent['Client']['ID'])) 
      partner_keys1.append(BounceEvent['PartnerKey']) 
      created_dates1.append(BounceEvent['CreatedDate']) 
      modified_date1.append(BounceEvent['ModifiedDate']) 
      ID1.append(BounceEvent['ID']) 
      ObjectID1.append(BounceEvent['ObjectID']) 
      SendID1.append(BounceEvent['SendID']) 
      SubscriberKey1.append(BounceEvent['SubscriberKey']) 
      EventDate1.append(BounceEvent['EventDate']) 
      EventType1.append(BounceEvent['EventType']) 
      TriggeredSendDefinitionObjectID1.append(BounceEvent['TriggeredSendDefinitionObjectID']) 
      BatchID1.append(BounceEvent['BatchID']) 
      SMTPCode.append(BounceEvent['SMTPCode']) 
      BounceCategory.append(BounceEvent['BounceCategory']) 
      SMTPReason.append(BounceEvent['SMTPReason']) 
      BounceType.append(BounceEvent['BounceType']) 

     df1 = pd.DataFrame({'ClientID': ClientIDBounces, 'PartnerKey': partner_keys1, 
         'CreatedDate' : created_dates1, 'ModifiedDate': modified_date1, 
         'ID':ID1, 'ObjectID': ObjectID1,'SendID':SendID1,'SubscriberKey':SubscriberKey1, 
         'EventDate':EventDate1,'EventType':EventType1,'TriggeredSendDefinitionObjectID':TriggeredSendDefinitionObjectID1, 
         'BatchID':BatchID1,'SMTPCode':SMTPCode,'BounceCategory':BounceCategory,'SMTPReason':SMTPReason,'BounceType':BounceType})   
     #print df1 
     #df1 = df1[(df1.EventDate > "2016-02-20") & (df1.EventDate < "2016-02-25")] 
     #AggreateDF = AggreateDF[(AggreateDF.EventDate > Start_Date) and (AggreateDF.EventDate < End_Date)] 
    print(df1['ID'].max())    
    AggreateDF = AggreateDF.append(df1) 
    print(AggreateDF.shape) 
    #df1 = df1[(df1.EventDate > "2016-02-20") and (df1.EventDate < "2016-03-25")]  
    #AggreateDF = AggreateDF[(AggreateDF.EventDate > Start_Date) and (AggreateDF.EventDate < End_Date)] 
    print("Final Aggregate DF is: " + str(AggreateDF.shape)) 

    #EXPORT TO CSV 
    AggreateDF.to_csv(Export_Dir +'DataTest1.csv') 
     #with pd.option_context('display.max_rows',10000): 
      #print (df_masked1.shape) 
     #print df_masked1 



except Exception as e: 
    print 'Caught exception: ' + str(e.message) 
    print e 

私のコードは、データを解析する前に、私はデータの取得orginalフォーマットは、SOAP応答で、これは次のとおりです。データフレームが、運と私は日付を指定しているライン32上の運からの直接日付それはどのように見えるか(下)。 SOAP応答からEventDateに基づいてレコードを直接解析することはできますか?これは理にかなって

}, (BounceEvent){ 
    Client = 
     (ClientID){ 
     ID = 1111111 
     } 
    PartnerKey = None 
    CreatedDate = 2016-05-12 07:32:20.000937 
    ModifiedDate = 2016-05-12 07:32:20.000937 
    ID = 1111111 
    ObjectID = "1111111" 
    SendID = 1111111 
    SubscriberKey = "[email protected]" 
    EventDate = 2016-05-12 07:32:20.000937 
    EventType = "HardBounce" 
    TriggeredSendDefinitionObjectID = "aa111aaa" 
    BatchID = 1111111 
    SMTPCode = "1111111" 
    BounceCategory = "Hard bounce - User Unknown" 
    SMTPReason = "aaaa" 
    BounceType = "immediate" 

ホープ、これは助けのための私の必死の嘆願です。

ありがとうございます!

+0

現在出力しているものは何ですか?あなたは今、少し不明なように、あなたが求めているものを明確にしようとすることができますか? – depperm

+0

申し訳ありません。現在私が求めています何 「印刷Results_Messageを」私はライン44上で起こっていると考えている文字列「MoreDataAvailableを」outputtnigされることは次のとおりです。 1.私はちょうど私がライン44であると考えているものにループからコードを防ぐにはどうすればよいと実際にコードを実行し、データフレームにデータを配置TILL "Result_Message"は "MoreDataAvailable"と等しくない 2. API呼び出し自体または使用するeventDateを制御できるデータフレームにロジックを設定するにはどうすればよいですか。たとえば、2016-07-20から2016-07-21までのレコードのみを表示したいのですが、 これが意味すると思っています。 – RustyShackleford

答えて

0

ループ内でResults_Messageを更新しているようではないので、常に29行目の値を取得します:Results_Message = getResponse1.message。あなたが共有していないコードが含まれていない限り、それはありません。

+0

私はすべてのコードを共有しています。 "getResponse1.message"には "MoreDataAvailable"という文字列が含まれていますので、変更するとループが停止します。 「Results_Message」の更新方法を教えてください。 – RustyShackleford

関連する問題