Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Python ArcPy Connect to SDE and versions
#Name: Python ArcPy Connect to SDE and versions
#Author: Bryan McIntosh
#Description: An approach to connect to SDE, create a new version, and change
# to the new version - inside a python script.
import arcpy, datetime, os, tempfile, shutil
#Create a string of the date to append to version name (to keep unique)
now = datetime.datetime.now()
strDate = str(now.year) + str(now.month) + str(now.day) + str(now.hour) + str(now.minute) + str(now.second)
#Create a temp directory using tempfile module to store SDE connection files
sdeTempPath = tempfile.mkdtemp()
#Setup first SDE Connection
arcpy.CreateDatabaseConnection_management(sdeTempPath,'ConnName.sde','SQL_SERVER','db\\instance','OPERATING_SYSTEM_AUTH','#', '#', '#','DBName')
##Create a new version (default as parent version)
sdeVersionName = 'MyVersion_' + strDate
arcpy.CreateVersion_management(sdeTempPath + os.sep + 'ConnName.sde', 'prefixName.DEFAULT', sdeVersionName, 'PUBLIC')
#The prefix of the version name isn't known (based on user), so need to find it so we can connect later
sdeVersionNameFULL = ''
for version in arcpy.da.ListVersions(sdeTempPath + os.sep + 'ConnName.sde'):
if version.name.split('.')[1] == sdeVersionName and not version.children:
sdeVersionNameFULL = version.name.split('.')[0] + '.' + sdeVersionName
arcpy.AddMessage('Version verified: ' + sdeVersionNameFULL)
##Create new connection file pointing to the new version
arcpy.CreateDatabaseConnection_management(sdeTempPath,'ConnVersion.sde','SQL_SERVER','db\\instance','OPERATING_SYSTEM_AUTH','#', '#', '#','DBName','#','#', sdeVersionNameFULL)
##DO STUFF WITH THE NEW VERSION
##DO STUFF WITH THE NEW VERSION
##When done, Remove the temp path containing connection files
shutil.rmtree(sdeTempPath)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.