Load CSV to Identity Streme

Load CSV to Identity Streme

On this page

#!/usr/bin/env python3

import csv
import os

from fullcontact import FullContactClient

# Fetch API Key from env variable "FC_API_KEY"
API_KEY = os.environ.get('FC_API_KEY')

# Define input, output file names
input_file = './input.csv'
output_filename = './output.csv'
outputs = []

fullcontact_client = FullContactClient(api_key=API_KEY)

with open(input_file, encoding='utf-8') as csvf:
    csv_reader = csv.DictReader(csvf)

for row in csv_reader:
        try:
            # Pass all row K:V pairings to API.
            future = fullcontact_client.identity.resolve_async(**row)
            result = future.result()
            personIds = result.get_personIds()
            row['personIds'] = personIds
        except Exception as e:
            # Generic exception handling. Should be more granular in a production env
            print('something went wrong: ', e)
            row['personIds'] = []
        outputs.append(row)

with open(output_filename, 'w', newline='') as output_file:
    # Define header based on one row's keys
    keys = outputs[0].keys()
    out_writer = csv.DictWriter(output_file, keys)
    out_writer.writeheader()
    for row in outputs:
        out_writer.writerow(row)

Import libraries

Get the FullContact Python client here: GitHub - FullContact Python Client

Fetch API key from secure location

Keep your API key safe! In this case, the API key is stored as an environment variable "FC_API_KEY"

Define input and output files

This script uses generic names of input and output but these will likely be different depending on your needs/workflows.

Note: This script stores output rows in memory as a List.

Instantiate FullContact client

Using your API, instantiate the FullContact client. See the full list of configurations here: Client Configuration

Open input file

Converts CSV inputs to python dict objects, which will be sent to Resolve as MultiFieldRequest (MultiFieldRequest Documentation)

Call identity.resolve for each row (record)

Each row is sent to the identity.resolve API, the future result is collected and the personIds are collected from the response. A new row is generated by appending the resultant personIds to the input row and stored in a list object named "outputs".

Note: The exception handling of this example is very generic. Tread lightly!

Write output file from stored outputs

This section defines the header from one result (input headers + personId in this case). The list of stored outputs are written to the named output file: output.csv.