2017-10-12 7 views
3

Je continue à recevoir l'erreur: "L'objet' builtin_function_or_method 'n'a pas d'attribut' execute '" Je pensais initialement que la plainte était sur la fonction de valeur de la table dans SQL Server, cependant, je vois que le message pointe à "exécuter", donc je ne pense pas que refcur a été défini. Voici à quoi ressemble ma chaîne de connexion:Python 3.x: Erreur sur la connexion au serveur pyodbc sql "no attribute 'execute"

conn = pyodbc.connect("Driver={SQL Server};" 
         "Server=myserver;" 
         "Database=mydatabase;" 
         "Trusted_Connection=yes;" 
         "autocommit=True;") 

    refcur = conn.cursor 
    sql = "exec myschema.mystoredproc @TVPobject=?" 
    refcur.execute(sql,this_object) 

J'ai joint l'image pour montrer ce que je vois dans intellisense pour ce qui est disponible. Est-ce que quelqu'un sait pourquoi cela se passe?

enter image description here

Répondre

4

vous n'êtes pas appeler cursor, vous êtes juste retourner une référence à cette fonction de membre et de le stocker dans refcur. Pour appeler (et créer réellement un curseur), vous devez ajouter les parenthèses:

refcur = conn.cursor() 
# Here -------------^ 
+1

Maintenant, ce doit être la chose la plus stupide que j'ai jamais posté - mais je dépensais beaucoup trop de temps là-dessus . Je n'ai même pas remarqué la parenthèse manquante. Je vais laisser ceci posté. Je suis sûr que je ne suis pas le seul qui a passé (ou va passer) le temps à courir après cette erreur pour cette raison même! :) @Mureinik, merci beaucoup! – plditallo