Python SQL with NoSQL

From DreamFactory
Jump to: navigation, search
DreamFactoryTutorialsPython SQL with NoSQL
m (Added syntax highlighting)
Line 1: Line 1:
 
<source lang=python>
 
<source lang=python>
 
# script db._table.contact.get.post_process
 
# script db._table.contact.get.post_process
 
+
 
# for each record in the MySQL db service, query the MongoDB service to get the Twitter handle for that contact
 
# for each record in the MySQL db service, query the MongoDB service to get the Twitter handle for that contact
  
import httplib;
+
content = event.response.content;
import json;
+
  
content = event['response']['content'];
+
if content.resource != "":
host = event['request']['headers']['host'][0];
+
     records = content.resource;
headers = {
+
    'x-dreamfactory-api-key':platform['session']['api_key'],
+
    'x-dreamfactory-session-token':platform['session']['session_token']
+
};
+
   
+
connection = httplib.HTTPConnection(host);
+
 
+
if content['resource'] != "":
+
     records = content['resource'];
+
 
     for (i, record) in enumerate(records):
 
     for (i, record) in enumerate(records):
 
         # filter by email
 
         # filter by email
         filter = "filter=" + "email=" + record['email'];
+
         filter = "filter=" + "email=" + record.email;
       
+
 
         # get matching record from MongoDB service
 
         # get matching record from MongoDB service
         connection.request('GET', '/api/v2/mongodb/_table/contact?'+filter, '', headers);
+
         result = platform.api.get('/mongodb/_table/contact?'+filter);
         response = connection.getresponse();
+
         # convert json string -> dict -> bunch
         result = json.loads(response.read());
+
         data = bunchify(json.loads(result.read()));
 
          
 
          
 
         # from_mongo_twitter can be a field in MySQL schema, but it doesn't have to be  
 
         # from_mongo_twitter can be a field in MySQL schema, but it doesn't have to be  
         record['from_mongo_twitter'] = result['resource'][0]['twitter'].encode('utf-8');
+
         record.from_mongo_twitter = data.resource[0].twitter.encode('utf-8');
 
         records[i] = record;
 
         records[i] = record;
  
event['response']['content']['resource'] = records;
 
  
 +
event.response.content = records;
 
# set this flag if you change the response content
 
# set this flag if you change the response content
# you can also set event['response']['status_code'] and event['response']['content_type']
+
# you can also set event.response.status_code and event.response.content_type
event['response']['content_changed'] = True;
+
event.response.content_changed = True;
 
</source>
 
</source>

Revision as of 06:28, 30 May 2016

# script db._table.contact.get.post_process
 
# for each record in the MySQL db service, query the MongoDB service to get the Twitter handle for that contact
 
content = event.response.content;
 
if content.resource != "":
    records = content.resource;
    for (i, record) in enumerate(records):
        # filter by email
        filter = "filter=" + "email=" + record.email;
 
        # get matching record from MongoDB service
        result = platform.api.get('/mongodb/_table/contact?'+filter);
        # convert json string -> dict -> bunch
        data = bunchify(json.loads(result.read()));
 
        # from_mongo_twitter can be a field in MySQL schema, but it doesn't have to be 
        record.from_mongo_twitter = data.resource[0].twitter.encode('utf-8');
        records[i] = record;
 
 
event.response.content = records;
# set this flag if you change the response content
# you can also set event.response.status_code and event.response.content_type
event.response.content_changed = True;