if __name__ == "__main__":
    logging.info("Running incremental Zendesk export...")

    # Create object for Zendesk queries
    zd = ZendeskTask(config.zenURL, config.zenAgent, config.zenPass, config.zenToken)
    
    # Create object for internal database methods (mySQL)
    zendeskDb = MySqlTask(config.zendeskMySql['username'],
                          config.zendeskMySql['password'],
                          config.zendeskMySql['host'],
                          config.zendeskMySql['database'])
    zendeskDb.connect()

    # Grab the last time Accounts were successfully updated
    start_time = zendeskDb.pull_job_timestamp("INCREMENTAL_EXPORT")

    logging.info("INCREMENTAL_EXPORT: start_time={0}".format(start_time))
    try:
        tickets = zd.get_tickets(start_time)

    except Exception, err:
        logging.exception(err)
    #print tickets

    dbQuery = ("INSERT INTO tickets "
                "VALUES (%(ticket_id)s, %(generated_timestamp)s, "
                    "%(req_name)s, %(req_id)s, %(req_external_id)s, "
                    "%(req_email)s, %(submitter_name)s, %(assignee_name)s, "
                    "%(group_name)s, %(subject)s, %(current_tags)s, "
                    "%(priority)s, %(via)s, %(ticket_type)s, %(created_at)s, "
	# Create object for Salesforce methods
	sfdc = SalesforceTask(config.sfUser, config.sfPass, config.sfApiToken)

	# Create object for Zendesk methods
	zd = ZendeskTask(config.zenURL, config.zenAgent, config.zenPass, config.zenToken)

	### Pull SFDC Contact Info to Zendesk ###
	try:
		sfdcLastModified = sfdc.sfdc_timestamp()
		logging.info("Current Salesforce Timestamp: {0}".format(sfdcLastModified))
	except Exception, err:
		logging.error(err)
		sys.exit()

	# Get the last modified timestamp from internal database
	startTime = { "startTime" : mysqlDb.pull_job_timestamp('SFDC_CONTACT_LM_PULL') }
	logging.info("Pulling an internal start time of {0}".format(startTime))

	##### Extract modified SFDC Contacts#####
	logging.info("Pulling Authorized Support Contacts from Salesforce")
	sfdcQuery = """
				SELECT Email, MailingPostalCode, Phone, Authorized_Support_Contact__c 
				FROM Contact 
				WHERE LastModifiedDate > %(startTime)s
				""" % startTime
	sfdcResults = sfdc.sfdc_query(sfdcQuery)

	for contact in sfdcResults['results']:
		data = { }
		data['tags'] = []
		user_id = 0
	# Create object for Salesforce methods
	sfdc = SalesforceTask(config['sfUser'], config['sfPass'], config['sfApiToken'])

	# Create object for Zendesk methods
	zd = ZendeskTask(config['zenURL'], config['zenAgent'], config['zenPass'], config['zenToken'])

	### Pull SFDC Account Info to Zendesk Organizations ###
	try:
		sfdcLastModified = sfdc.sfdc_timestamp()
		logging.info("Current Salesforce Timestamp: {0}".format(sfdcLastModified))
	except Exception, err:
		logging.exception(err)
		sys.exit()

	# Get the last modified timestamp from internal database
	startTime = mysqlDb.pull_job_timestamp('SFDC_ACCOUNTS_LAST_MODIFIED')
	logging.info("Pulling SFDC_ACCOUNTS_LAST_MODIFIED; start time of {0}".format(startTime))

	##### Extract all SFDC Accounts #####
	logging.info("Pulling Accounts from Salesforce")
	sfdcQuery = """SELECT Id, Name, Subscription_Plan__c, Support_Package__c, Zendesk__Domain_Mapping__c, 
						  Account_Owner_Name__c, Named_Support_Engineer__c, Technical_Account_Manager__r.Name, 
						  Twitter_Rate_Approval__c, Username_s__c, Account_Status__c, SMB_Enterprise__c,
						  Contracted_MRR__c  
				   FROM Account 
				   WHERE LastModifiedDate > {0}""".format(startTime)
	sfdcResults = sfdc.sfdc_query(sfdcQuery)
	sfdcAccounts = ProcessSfdcAccounts(sfdcResults['results'])


	# If there are no SFDC Account modified since the last run, update the internal 
import re
import logging
import sys

if config.logLevel == "info":
	logging.basicConfig(format='%(asctime)s | %(levelname)s | %(filename)s | %(message)s', level=logging.INFO, filename=config.logFile)
else:
	logging.basicConfig(format='%(asctime)s | %(levelname)s | %(filename)s | %(message)s', level=logging.DEBUG, filename=config.logFile)

sfdc = SalesforceTask(config.sfUser, config.sfPass, config.sfApiToken)
mysqlDb = MySqlTask(config.mysql_username, config.mysql_password, config.mysql_host, config.mysql_database)

sfdc_update = {}

# Get the last modified timestamp from internal database
startTime = mysqlDb.pull_job_timestamp('SFDC_DATASIFT_USER_ID')
logging.info("Pulling SFDC_DATASIFT_USER_ID; start time of {0}".format(startTime))

# Pull from SFDC
query = "Select Id, DataSift_UserID__c, Name FROM Account WHERE Account_Status__c = 'Customer' and DataSift_UserID__c != '' and LastModifiedDate > {0}".format(startTime)

results = sfdc.sfdc_query(query)

if results['count'] > 0:
	for account in results['results']:
		if account['Id'] not in sfdc_update:
			sfdc_update[account['Id']] = []
		ids = re.findall(r'[0-9]+', account['DataSift_UserID__c'])
		if len(ids):
			for i in ids:
				# Query Users table
    try:
        # Create object for internal database methods (mySQL)
        mysqlDb = MySqlTask(config.mysql_username, config.mysql_password, config.mysql_host, config.mysql_database)

        # Create object for Salesforce methods
        sfdc = SalesforceTask(config.sfUser, config.sfPass, config.sfApiToken)

        logging.info("Logging into SFDC...")

        ######################## SFDC Accounts ########################
        # Get the last modified timestamp
        sfdcLastModified = sfdc.sfdc_timestamp()

        # Grab the last time Accounts were successfully updated
        scriptLastRun = mysqlDb.pull_job_timestamp("SFDC_ACCOUNT_OWNERS_LM")

        query = "SELECT Id, Name, OwnerId, Owner.Name, Account_Owner_Name__c FROM Account WHERE LastModifiedDate > {0}".format(
            scriptLastRun
        )
        results = sfdc.sfdc_query(query)
        accountUpdates = processQueryResults(accountOwnerField, results["results"])

        if len(accountUpdates):
            print "Processing {0} Accounts".format(len(accountUpdates))
            sfdc.update_sfdc_object("Account", accountOwnerField, accountUpdates, sf_batchSize)

        mysqlDb.update_job_timestamp("SFDC_ACCOUNT_OWNERS_LM", sfdcLastModified)

        ######################## SFDC Leads ########################
        # Get the last modified timestamp