2016-11-14 27 views
0

如何在pandas數據框中插入query_result的輸出?查詢結果首先獲取500條記錄,並使用QueryMore拖動剩餘的記錄。我無法將df中的所有內容與列名一起推送。sfdc在pandas數據框中選擇結果

#!/usr/bin/env python3 

import beatbox 
import sqlalchemy 

engine_str = 'mysql+mysqlconnector://db-user:[email protected]/db-name' 
engine = sqlalchemy.create_engine(engine_str, echo=False, encoding='utf-8') 
connection = engine.connect() 

sf = beatbox._tPartnerNS 
service = beatbox.Client() 
def sync_user(objectSOQL): 
    service.login('sfdc-username', 'sfdc-creds') 
    query_result = service.query(objectSOQL) 
    while True: 
     for row in query_result[sf.records:]: 
      SQL_query = 'INSERT INTO user(' \ 
         'id, ' \ 
         'name, ' \ 
         'department, ' \ 
         'sales_team) ' \ 
         'VALUES(' \ 
         '\"{}\",\"{}\",\"{}\",\"{}\"' \ 
         ') ON DUPLICATE KEY UPDATE '\ 
         'name = VALUES(name), '\ 
         'department = VALUES(department), '\ 
         'sales_team = VALUES(sales_team) '\ 
         .format(
         row[2], 
         row[3], 
         row[4], 
         row[5] 
         ) 
      # SQL_query = SQL_query.replace('\"None\"', 'NULL') 

      try: 
       connection.execute(SQL_query) 
      except Exception as e: 
       print(id, e) 

     if str(query_result[sf.done]) == 'true': 
      break 
     query_result = service.queryMore(str(query_result[sf.queryLocator])) 

if __name__ == "__main__": 
    SOQL = 'SELECT id, Name, Department, Sales_Team__c FROM User' 
    sync_user(SOQL) 

回答

相關問題