0

Trying to learn how to use Select_analysis but the queries cause the

ERROR 000358: Invalid expression.

Piece of code:

arcpy.Select_analysis(in_features='test1',
                out_feature_class=os.path.join(r'C:\Users\users\Desktop\05\Project1.gdb',
                 'WACDE'),where_clause="Select test1.KA FROM test1 WHERE test1.NUM = '12'")

What is the correct form?

6
  • 1
    What is your data source? SQL Server, shapefile, PostgreSQL, File Geodatabase, etc? Your datasource will dictate how you communicate with it via SQL statements. See here.
    – Barbarossa
    Commented Oct 22, 2018 at 15:01
  • 2
    The where_clause parameter accepts only a WHERE clause (with or without the WHERE). There are a number of examples of correct Select_analysis usage in the documentation.
    – Vince
    Commented Oct 22, 2018 at 15:10
  • it's a geodatabse in ArcMap.
    – user130347
    Commented Oct 23, 2018 at 5:56
  • @Vince So is there any way to accept a normal select statement as we would in a normal database or they always have to be like the answer below?
    – user130347
    Commented Oct 23, 2018 at 5:58
  • 1
    If it was an Enterprise database, then you could use arcpy.ArcSDESQLExecute, but file database doesn't have a backend SQL engine. You need to parse the SELECT statement elements and drop them into their respective parameters.
    – Vince
    Commented Oct 23, 2018 at 10:32

1 Answer 1

3
import arcpy

arcpy.env.workspace = r'C:\Users\users\Desktop\05\Project1.gdb'
in_features = 'test1'
out_feature_class = 'WACDE'
where_clause = "NUM = '12'"
arcpy.Select_analysis(in_features , out_feature_class , where_clause)

Check this out, it should work. I assumed your column is named NUM. Let me know if that was your goal to achieve.

8
  • I know this works the problem is that I have a column full of select statements and I will need to use them as full sql queries like in a database. Can you tell me how to make it work with the query above?I am upvoting for the effort though
    – user130347
    Commented Oct 22, 2018 at 14:23
  • Just add some more info about your problem, ex. some screenshots of that table. Commented Oct 22, 2018 at 14:27
  • To explain, the select query I have in the question is an alternative way to do what you did.The thing is that the queries have the first form (select ... from .. where). How can I make it process queries in that form, just like in a database?using Select_analysis? Thanks
    – user130347
    Commented Oct 22, 2018 at 14:31
  • 2
    Is this a column as an attribute in a shapefile or featureclass, or in a CSV table, or some other data source? When you read the input, you should be able to break it up using split in arcpy, for example whereclause = sqlquery.split("WHERE ")[-1]
    – SMiller
    Commented Oct 22, 2018 at 15:20
  • it's a geodatabse in ArcMap. Is there a way to use a normal select statement as we would in a database? Or it has to be typed like in the answer?
    – user130347
    Commented Oct 23, 2018 at 6:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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