Hi all,
I am trying to create a script that would allow me to join data after programmatically after a replica is created.
I am not sure how to select the feature class and table located in the unzipped gdb.
Here is the script:
<SPAN class="keyword token">import</SPAN> urllib<SPAN class="punctuation token">,</SPAN> urllib2<SPAN class="punctuation token">,</SPAN> json<SPAN class="punctuation token">,</SPAN> time<SPAN class="punctuation token">,</SPAN> datetime<SPAN class="punctuation token">,</SPAN> os<SPAN class="punctuation token">,</SPAN>fnmatch<SPAN class="punctuation token">,</SPAN> zipfile<SPAN class="punctuation token">,</SPAN> arcpy<SPAN class="punctuation token">,</SPAN> sys<SPAN class="punctuation token">,</SPAN> logging
pattern <SPAN class="operator token">=</SPAN> <SPAN class="string token">'*.zip'</SPAN>
gdbextension <SPAN class="operator token">=</SPAN> <SPAN class="string token">'*.gdb'</SPAN>
logging<SPAN class="punctuation token">.</SPAN>basicConfig<SPAN class="punctuation token">(</SPAN>filename<SPAN class="operator token">=</SPAN>r<SPAN class="string token">"\\arcgisserver\cronjobs\stormwater\backup.log"</SPAN><SPAN class="punctuation token">,</SPAN>format<SPAN class="operator token">=</SPAN><SPAN class="string token">'%(asctime)s %(levelname)s: %(message)s'</SPAN><SPAN class="punctuation token">,</SPAN>datefmt<SPAN class="operator token">=</SPAN><SPAN class="string token">'%m/%d/%Y %I:%M:%S %p'</SPAN><SPAN class="punctuation token">,</SPAN>level<SPAN class="operator token">=</SPAN>logging<SPAN class="punctuation token">.</SPAN>INFO<SPAN class="punctuation token">)</SPAN>
username <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN> <SPAN class="comment token">#CHANGE</SPAN>
password <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN> <SPAN class="comment token">#CHANGE</SPAN>
replicaURL <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN> <SPAN class="comment token">#CHANGE</SPAN>
replicaLayers <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="comment token">#CHANGE</SPAN>
replicaName <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN> <SPAN class="comment token">#CHANGE</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">sendRequest</SPAN><SPAN class="punctuation token">(</SPAN>request<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
response <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>urlopen<SPAN class="punctuation token">(</SPAN>request<SPAN class="punctuation token">)</SPAN>
readResponse <SPAN class="operator token">=</SPAN> response<SPAN class="punctuation token">.</SPAN>read<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
jsonResponse <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>loads<SPAN class="punctuation token">(</SPAN>readResponse<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> jsonResponse
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'..Starting process..'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Generating token"</SPAN><SPAN class="punctuation token">)</SPAN>
url <SPAN class="operator token">=</SPAN> <SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Farcgis.com%2Fsharing%2Frest%2FgenerateToken" target="_blank">https://arcgis.com/sharing/rest/generateToken</A><SPAN>"</SPAN></SPAN>
data <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'username'</SPAN><SPAN class="punctuation token">:</SPAN> username<SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'password'</SPAN><SPAN class="punctuation token">:</SPAN> password<SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'referer'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token"><SPAN>"</SPAN><A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fwww.arcgis.com" target="_blank">https://www.arcgis.com</A><SPAN>"</SPAN></SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'f'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'json'</SPAN><SPAN class="punctuation token">}</SPAN>
request <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>Request<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">,</SPAN> urllib<SPAN class="punctuation token">.</SPAN>urlencode<SPAN class="punctuation token">(</SPAN>data<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
jsonResponse <SPAN class="operator token">=</SPAN> sendRequest<SPAN class="punctuation token">(</SPAN>request<SPAN class="punctuation token">)</SPAN>
token <SPAN class="operator token">=</SPAN> jsonResponse<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'token'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Creating the replica"</SPAN><SPAN class="punctuation token">)</SPAN>
data <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'f'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'json'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'replicaName'</SPAN> <SPAN class="punctuation token">:</SPAN> replicaName<SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'layers'</SPAN> <SPAN class="punctuation token">:</SPAN> replicaLayers<SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'returnAttachments'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'true'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'returnAttachmentsDatabyURL'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'false'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'syncModel'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'none'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'dataFormat'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'filegdb'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'async'</SPAN> <SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'true'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'token'</SPAN><SPAN class="punctuation token">:</SPAN> token<SPAN class="punctuation token">}</SPAN>
request <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>Request<SPAN class="punctuation token">(</SPAN>replicaURL<SPAN class="punctuation token">,</SPAN> urllib<SPAN class="punctuation token">.</SPAN>urlencode<SPAN class="punctuation token">(</SPAN>data<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
jsonResponse <SPAN class="operator token">=</SPAN> sendRequest<SPAN class="punctuation token">(</SPAN>request<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>jsonResponse<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Pinging the server"</SPAN><SPAN class="punctuation token">)</SPAN>
responseUrl <SPAN class="operator token">=</SPAN> jsonResponse<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'statusUrl'</SPAN><SPAN class="punctuation token">]</SPAN>
url <SPAN class="operator token">=</SPAN> <SPAN class="string token">"{}?f=json&token={}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>responseUrl<SPAN class="punctuation token">,</SPAN> token<SPAN class="punctuation token">)</SPAN>
request <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>Request<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">)</SPAN>
jsonResponse <SPAN class="operator token">=</SPAN> sendRequest<SPAN class="punctuation token">(</SPAN>request<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">while</SPAN> <SPAN class="operator token">not</SPAN> jsonResponse<SPAN class="punctuation token">.</SPAN>get<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"status"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">==</SPAN> <SPAN class="string token">"Completed"</SPAN><SPAN class="punctuation token">:</SPAN>
time<SPAN class="punctuation token">.</SPAN>sleep<SPAN class="punctuation token">(</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">)</SPAN>
request <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>Request<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">)</SPAN>
jsonResponse <SPAN class="operator token">=</SPAN> sendRequest<SPAN class="punctuation token">(</SPAN>request<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Create string date for today's date</SPAN>
dt <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>datetime<SPAN class="punctuation token">.</SPAN>date<SPAN class="punctuation token">.</SPAN>today<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Create new folder with today's date</SPAN>
newfolder <SPAN class="operator token">=</SPAN> <SPAN class="string token">'C:\\replicas'</SPAN><SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> dt
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>exists<SPAN class="punctuation token">(</SPAN>newfolder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> os<SPAN class="punctuation token">.</SPAN>makedirs<SPAN class="punctuation token">(</SPAN>newfolder<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Downloading the replica. In case this fails note that the replica URL is: \n"</SPAN><SPAN class="punctuation token">)</SPAN>
jres <SPAN class="operator token">=</SPAN> jsonResponse<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'resultUrl'</SPAN><SPAN class="punctuation token">]</SPAN>
url <SPAN class="operator token">=</SPAN> <SPAN class="string token">"{0}?token={1}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>jres<SPAN class="punctuation token">,</SPAN> token<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">)</SPAN>
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Replica URL: "</SPAN><SPAN class="punctuation token">)</SPAN>
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">)</SPAN>
f <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>urlopen<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> open<SPAN class="punctuation token">(</SPAN>newfolder <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>jres<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"wb"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> local_file<SPAN class="punctuation token">:</SPAN>
local_file<SPAN class="punctuation token">.</SPAN>write<SPAN class="punctuation token">(</SPAN>f<SPAN class="punctuation token">.</SPAN>read<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"\n Finished!"</SPAN><SPAN class="punctuation token">)</SPAN>
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"finished creating replica"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> root<SPAN class="punctuation token">,</SPAN> dirs<SPAN class="punctuation token">,</SPAN> files <SPAN class="keyword token">in</SPAN> os<SPAN class="punctuation token">.</SPAN>walk<SPAN class="punctuation token">(</SPAN>newfolder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> filename <SPAN class="keyword token">in</SPAN> fnmatch<SPAN class="punctuation token">.</SPAN>filter<SPAN class="punctuation token">(</SPAN>files<SPAN class="punctuation token">,</SPAN> pattern<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>root<SPAN class="punctuation token">,</SPAN> filename<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
zipfile<SPAN class="punctuation token">.</SPAN>ZipFile<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>root<SPAN class="punctuation token">,</SPAN> filename<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>extractall<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>root<SPAN class="punctuation token">,</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>filename<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>