NOTE: I have a post here that shows how to check if a field exists using arcpy in ArcGIS 10.0.
In developing a python script to reload a geodatabase, I wanted to create any necessary indexes.
No problem creating the index, for example:
gp.AddIndex_management(tablename, field, IndexName, "NON_UNIQUE", "NON_ASCENDING")
But before creating the index, I wanted to verify that it did not exist. I tried the ever-popular, exists but could not get it to work–either it does not detect indexes or I just never got the fully-qualified name for the index right (ArcSDE using a postgres datastore).
I finally found this ArcGIS Desktop Help 9.3 – ListIndexes method from ESRI. Unfortunately, it doesn’t work-it did not like the “while” loop construction. I’m guessing it worked in 9.2 and despite ESRI’s own warning about differences in 9.2 & 9.3, they did not update the sample code.
A key is to make sure you create a 9.3-version geoprocessing object and the following code can be used. The caveat that I need to include is that the code only checks one table, if the index is on a different table, it will give you a false-negative.
gp = arcgisscripting.create(9.3) def indexExists(tablename,indexname): if not gp.Exists(tablename): return False indexList = gp.listindexes(tablename) for iIndex in indexList: if (iIndex.Name == indexname): return True return False
To call it, just pass the table and indexname you are looking for.