My UpdateCursor isn't working in arcpy. Here's my code:

urows = arcpy.UpdateCursor(firstDatabase+ os.sep + "Temp")
for urow in urows:
    urow.Import_Date = time.strftime("%d/%m/%Y")
    urow.File_Name = str(table)

It will always error out on the Import_Date field saying "error executing function".

The Import_Date is a 'date' field.

Any ideas?

Here is a screen shot of the loop when I add "arcpy.AddMessage(urow)" in the code and # out the other stuff.
enter image description here

  • What format is the Import_Date field? – nmpeterson Aug 11 '15 at 20:24
  • If you comment out the urow.Import_Date line, are you able to perform the urow.File_Name line without an error? – papadoo Aug 11 '15 at 20:32
  • It's a date field. – MjonesGEO Aug 11 '15 at 20:33
  • See here – Barbarossa Aug 11 '15 at 20:45
  • 1
    have you tried datetime.datetime.today()? – crmackey Aug 11 '15 at 21:30

Instead of using the dot field name notation that you are using, use the setValue/getValue notation instead. I just tried something like the following on a date field and it works fine:

urows = arcpy.UpdateCursor(os.path.join(firstDatabase, "Temp"))
for urow in urows:
    urow.setValue("Import_Date", time.strftime("%d/%m/%Y"))
    urow.setValue("File_Name", str(table))
| improve this answer | |

Try usin arcpy.da.UpdateCursor(fc, fields) . Then instead of using the dot field name notation, use the index e.g. row[0]. I recommend using a with statement and cursor.Make sure to commit by calling .updateRow more info here (http://resources.arcgis.com/de/help/main/10.2/index.html#//018w00000014000000)

Assuming you have 10.x, I am not sure if da.UpdateCursor existed in 9.x

| improve this answer | |
  • 2
    The da cursors weren't available until 10.1 – ianbroad Aug 11 '15 at 22:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.