Bonjour à tous (Ia Orana en Polynésien),

C'est la toute première fois que je dois faire une intégration de code SQL dans un script Python via arcpy.

J'ai une sélection classique fonctionne très bien sauf que mon souhait est d'utiliser plusieurs tables issue d'un ArcSDE et là je ne trouve pas encore de solutions similaires.

Pour info, la GDB est sous Postgres et j'utilise un Arcmap 10.3.
L'erreur affichée est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Runtime error 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "c:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\arcobjects\arcobjects.py", line 27, in execute
    return convertArcObjectToPythonObject(self._arc_object.Execute(*gp_fixargs(args)))
AttributeError: ArcSDESQLExecute: StreamExecute Erreur ArcSDE étendue -42 ERREUR:  erreur de syntaxe sur ou près de « FROM »
LINE 1: ...ent IS NULL THEN '' ELSE d.demembrement END,' - ' FROM otia2...
Merci beaucoup par avance pour vos réponses et votre attention !

Sélection classique qui fonctionne :
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import arcpy,sys,csv
 
#Environnement Python 
arcpy.env.overwriteOutput = True
 
workspace = arcpy.env.workspace = r"C:\Users\cmahieux\AppData\Roaming\ESRI\Desktop10.3\ArcCatalog\Connexion à 192.168.106.223.sde"
 
sde_conn =  arcpy.ArcSDESQLExecute(r"C:\Users\cmahieux\AppData\Roaming\ESRI\Desktop10.3\ArcCatalog\Connexion à 192.168.106.223.sde")
 
sql = "SELECT i.ile_nom,p.id_parcelle FROM otia2.ile AS i, otia2.parcelle AS p WHERE i.archipel = 'Archipel des Australes' GROUP BY i.ile_nom"
 
sqlresult = sde_conn.execute(sql)
 
for i in sqlresult:
 
    print i

Sélection un peu plus complexe :
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import arcpy,sys,csv
 
#Environnement Python 
arcpy.env.overwriteOutput = True
 
workspace = arcpy.env.workspace = r"C:\Users\cmahieux\AppData\Roaming\ESRI\Desktop10.3\ArcCatalog\Connexion à 192.168.106.223.sde"
sde_conn =  arcpy.ArcSDESQLExecute(r"C:\Users\cmahieux\AppData\Roaming\ESRI\Desktop10.3\ArcCatalog\Connexion à 192.168.106.223.sde")
 
#Code SQL
sql = "SELECT i.ile_nom, string_agg(DISTINCT t.terre||' '|| CASE WHEN d.demembrement IS NULL THEN '' ELSE d.demembrement END,' - ' FROM otia2.ile AS i, otia2.demembrement AS d, otia2.terre AS t WHERE i.archipel = 'Archipel des Australes' GROUP BY i.ile_nom"
 
sqlresult = sde_conn.execute(sql)
 
#afficher le resultat
for i in sqlresult:
 
    print i