Including variable in where clause of arcpy.Select_analysis()?
One thing that makes writing WHERE clauses a lot easier is to use the AddFieldDelimiters
function, which automatically adds the correct, DBMS-specific delimiters for field identifiers, such as double-quotes for FGDB and brackets for PGDB.
The other thing you have to consider is whether the value is a number, string, or other data type. Specifically, strings are wrapped in single quotes while numbers are not. You could check the field type and add single quotes if it is a string field.
E.g.:
import arcpy
def buildWhereClause(table, field, value):
"""Constructs a SQL WHERE clause to select rows having the specified value
within a given field and table."""
# Add DBMS-specific field delimiters
fieldDelimited = arcpy.AddFieldDelimiters(table, field)
# Determine field type
fieldType = arcpy.ListFields(table, field)[0].type
# Add single-quotes for string field values
if str(fieldType) == 'String':
value = "'%s'" % value
# Format WHERE clause
whereClause = "%s = %s" % (fieldDelimited, value)
return whereClause
if __name__ == "__main__":
inputfc = r"C:\input.shp"
outputfc = r"C:\output.shp"
fieldname = "StudyID"
fieldvalue = 101
whereclause = buildWhereClause(inputfc, fieldname, fieldvalue)
arcpy.Select_analysis(inputfc, outputfc, whereclause)
See also the function in this answer for a multi-value version of the above function.
Another, maybe simpler, way is:
where = '"StudyID" = ' + "'%s'" %Name
Try this:
Name = 1
study = "StudyID"
where = '"' + study + '" = ' + "'" + str(Name) + "'"