Why does the below script fail when custom toolbox is stored on an enterprise geodatabase?

4411
4
Jump to solution
03-18-2015 01:53 PM
DavidMuthami1
Occasional Contributor
#-------------------------------------------------------------------------------
# Name:        ULIMS Perfomance Management
# Purpose:    Script scheduled in windows scheduler used to perfom enteprise geodatabase tuning
#
# Author:      dmuthami
#
# Created:    17/03/2015
# Copyright:  (c) dmuthami 2015
# Licence:    <your licence>
#-------------------------------------------------------------------------------
import os, sys
import logging
import arcpy
import traceback
from arcpy import env
from datetime import datetime




def ulimsPerfomanceManagement():
    #Set-up logging
    logger = logging.getLogger('ulimsAutomation')
    try:
            #Export to text file#
        currentDate = datetime.now().strftime("-%y-%m-%d_%H-%M-%S") # Current time
        #Set-up some error logging code.
        cat_logfile = os.path.join(os.path.dirname("__file__"), 'cat_logfile' + str(currentDate)+'.log')
        #cat_logfile = r"C:\DAVID-MUTHAMI\GIS Data\Namibia ULIMS\Scripts" + "\\"+str(currentDate)+'.log'
        hdlr = logging.FileHandler(cat_logfile)
        formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
        hdlr.setFormatter(formatter)
        logger.addHandler(hdlr)
        logger.setLevel(logging.INFO)




        # Import the toolbox containing the model.  This toolbox
        #  has an alias of "ulimsAutomation"




        #Run model in a toolbox in a folder
        # model optimizes enterprise geodatabase from SQL Server
        #arcpy.ImportToolbox(r"C:\DAVID-MUTHAMI\GIS Data\Namibia ULIMS\Scripts\ULIMS_System.tbx","ulimsAutomation")




        #Run model hosted on SQL Server enterprise GDB to optimize enterprise geodatabase
        arcpy.ImportToolbox(r"Database Connections\sde@localhost@ulims_publication.sde","ulimsAutomation")




        # Run the model.
        #
        arcpy.ULIMSPerformanceManagement_ulimsAutomation()
        msg = "Performance tuning complete"
        print msg
        logger.info(msg)
    except:
        ## Return any Python specific errors and any error returned by the geoprocessor
        ##
        tb = sys.exc_info()[2]
        tbinfo = traceback.format_tb(tb)[0]
        pymsg = "PYTHON ERRORS:\n ulimsPerfomanceManagement() Function : Traceback Info:\n" + tbinfo + "\nError Info:\n    " + \
                str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n" +\
                "Line {0}".format(tb.tb_lineno)
        msgs = "Geoprocessing  Errors :\n" + arcpy.GetMessages(2) + "\n"




        ##Add custom informative message to the Python script tool
        arcpy.AddError(pymsg) #Add error message to the Python script tool(Progress dialog box, Results windows and Python Window).
        arcpy.AddError(msgs)  #Add error message to the Python script tool(Progress dialog box, Results windows and Python Window).




        ##For debugging purposes only
        ##To be commented on python script scheduling in Windows _log
        print pymsg
        logger.info(pymsg)
        print "\n" +msgs
        logger.info(msgs)




def main():
    pass




if __name__ == '__main__':
    main()
    #Run perfomance management module
    ulimsPerfomanceManagement()
0 Kudos
1 Solution

Accepted Solutions
DavidMuthami1
Occasional Contributor

Thanks to Esri support for providing answer to the problem.

See attached full code with correction.

Erroneous line of code reads like:

arcpy.ImportToolbox(r"Database Connections\sde@localhost@ulims_publication.sde","ulimsAutomation")

Corrected line of code reads:

        ##The below line code is when the toolbox containing the model is stored/hosted on SQL Server enterprise GDB

        arcpy.ImportToolbox(r"D:\GIS\Connection Files\Live Site\sde@172.24.0.47@ulims_gis.sde\ulims_gis.SDE.System_Admin","ulimsAutomation")

View solution in original post

4 Replies
BlakeTerhune
MVP Regular Contributor

Psst! Posting your code with syntax highlighting is appreciated!

Posting Code blocks in the new GeoNet

DavidMuthami1
Occasional Contributor

Thanks Blake. Your post was very helpful and i have applied the python formatting. The code should now be readable and clear.

DavidMuthami1
Occasional Contributor

Line 53 is the cause of the error. however, if i comment line 53 and uncomment line 47 the script runs flawlessly. This implies the problem occurs when when the model is stored in the enterprise geodatabase or any type of geodatabase used by Esri. The code only works if the model is in a toolbox stored in a folder. Let me if their is a solution.

0 Kudos
DavidMuthami1
Occasional Contributor

Thanks to Esri support for providing answer to the problem.

See attached full code with correction.

Erroneous line of code reads like:

arcpy.ImportToolbox(r"Database Connections\sde@localhost@ulims_publication.sde","ulimsAutomation")

Corrected line of code reads:

        ##The below line code is when the toolbox containing the model is stored/hosted on SQL Server enterprise GDB

        arcpy.ImportToolbox(r"D:\GIS\Connection Files\Live Site\sde@172.24.0.47@ulims_gis.sde\ulims_gis.SDE.System_Admin","ulimsAutomation")