Bonjour, après quelques heures de recherche je me permets de demander de l'aide sur le forum j'ai une erreur de tuple index out of range et je n'arrive pas à savoir pourquoi voici mon code ou cela se produit
# -*- coding: utf-8 -*-
import sqlite3
import json
#Methode qui retourne toutes les données de la table Offre de la BDD au format JSON
def getOffers():
conn = sqlite3.connect('AreAppSqlBase.db')
cursor = conn.cursor()
cursor.execute(""" SELECT * FROM Contact """)
resultCmd = cursor.fetchall()
Offres = []
for Offre in resultCmd:
offreDict = {
'OfferID': Offre[0],
'Titre': Offre[1],
'Durée' : Offre[2],
'Contrat' : Offre[3],
'FormationAssociée' : Offre[4],
'Etat' : Offre[5],
#Err ce produit sur cette ligne
'Details' : Offre[6],
#Err ce produit sur cette ligne
'DetailsResponsable' : Offre[7],
'DatePublication' : Offre[8],
'ContactRef' : Offre[9]}
Offres.append(offreDict)
return json.dumps(Offres)
conn.close()
#Cette methode fonctionne alors que c'est quasiment la même
#Methode qui retourne une offre en fonction de son ID au format JSON
def getOfferById(idOffer):
REQUETE_GET_OFFER_BY_ID = "SELECT * FROM Offre WHERE OfferID = %d" % idOffer
conn = sqlite3.connect('AreAppSqlBase.db')
cursor = conn.cursor()
cursor.execute(REQUETE_GET_OFFER_BY_ID)
resultCmd = cursor.fetchall()
Offres = []
for Offre in resultCmd:
offreDict = {
'OfferID': Offre[0],
'Titre': Offre[1],
'Durée' : Offre[2],
'Contrat' : Offre[3],
'FormationAssociée' : Offre[4],
'Etat' : Offre[5],
'Details' : Offre[6],
'DetailsResponsable' : Offre[7],
'DatePublication' : Offre[8],
'ContactRef' : Offre[9]}
Offres.append(offreDict)
return json.dumps(Offres)
conn.close()
Le message d'erreur :
Traceback (most recent call last):
File "C:\Program Files (x86)\Python35-32\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Program Files (x86)\Python35-32\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Program Files (x86)\Python35-32\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Program Files (x86)\Python35-32\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Program Files (x86)\Python35-32\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Program Files (x86)\Python35-32\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "app.py", line 37, in OffersList
return getOffers()
File "C:\Users\Maxime\Google Drive\IMERIR_COURS\GRABOLOSA_Pierre\SERVICEWEB_AREAPP_BOUILLON_SIREV0.0.1\offre.py", line 20, in getOffers
'Details' : Offre[6],
IndexError: tuple index out of range
Merci d'avance Joyeux Noël
EDIT : Si ça peut aider voici une capture des données présentes dans ma table !
EDIT 2 : Je viens de faire la même fonction mais qui reçoit plus de données avec une autre requête et la ça fonctionne.... Je comprends vraiment rien la...
#Methode qui retourne toutes les données de la table Offre avec les détails du contact associé de la BDD au format JSON
def getOffersLinkedWithContact():
conn = sqlite3.connect('AreAppSqlBase.db')
cursor = conn.cursor()
cursor.execute(""" SELECT * FROM Offre INNER JOIN Contact ON ContactRef = ContactID """)
resultCmd = cursor.fetchall()
OffresLinkedWithContact = []
for OffreContact in resultCmd:
offreContactDict = {
'OfferID': OffreContact[0],
'Titre': OffreContact[1],
'Duree' : OffreContact[2],
'Contrat' : OffreContact[3],
'FormationAssociee' : OffreContact[4],
'Etat' : OffreContact[5],
'Details' : OffreContact[6],
'DetailsResponsable' : OffreContact[7],
'DatePublication' : OffreContact[8],
'ContactRef' : OffreContact[9],
'ContactID' : OffreContact[10],
'NomContact' : OffreContact[11],
'NomEntreprise' : OffreContact[12],
'Lieu' : OffreContact[13],
'ContactMail' : OffreContact[14],
'ContactPhone' : OffreContact[15]}
OffresLinkedWithContact.append(offreContactDict)
return json.dumps(OffresLinkedWithContact)
conn.close()
- Edité par b0uill0n66 24 décembre 2016 à 17:09:41
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan
Toujours une erreur.. Même avec votre méthode... Je ne comprends pas vraiment mais je crois que je vais me passer de cette fonction car pour mon application finale je n'ai besoin que de getOffersLinkedWithContact() (Qui lui fonctionne alors que c'est un copié collé de getOffers() qui ne fonctionne pas)
Voici mon code
#Methode de test pour utilisation des clefs dictionnaires # ERREUR IndexError: No item with that key -> Sur le json.dumps
def getOffres():
conn = sqlite3.connect('AreAppSqlBase.db')
with conn:
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
cursor.execute(""" SELECT * FROM Contact """)
resultCmd = cursor.fetchall()
for Offre in resultCmd:
return json.dumps(Offre["OfferID"], Offre["Titre"], Offre["Durée"], Offre["Contrat"], Offre["FormationAssociée"], Offre["Etat"], Offre["Details"], Offre["DetailsResponsable"], Offre["DatePublication"], Offre["ContactRef"])
#return json.dumps(Offre[0], Offre[1], Offre[2], Offre[3], Offre[4], Offre[5], Offre[6], Offre[7], Offre[8], Offre[9])
Voici l'erreur
File "app.py", line 51, in Offre
return getOffres()
File "C:\Users\m.bouillon\Desktop\SERVICEWEB_AREAPP_BOUILLON_SIREV0.0.1\offre.py", line 38, in getOffres
return json.dumps(Offre["OfferID"], Offre["Titre"], Offre["Durée"], Offre["Contrat"], Offre["FormationAssociée"], Offre["Etat"], Offre["Details"], Offre["DetailsResponsable"], Offre["DatePublication"], Offre["ContactRef"])
IndexError: No item with that key
Voila voila merci encore
Bon mon erreur était très simple un de mes professeurs m'a aidé c'est juste que je faisais un select sur ma table contact qui ne contient que 6 Colonnes alors que je demandais à recevoir des données de la table Offre qui en contient 10 donc à partir de la 7 eme colonne il se demandait ou mettre les données. La faute de frappe bien connue que je ne vois jamais.
Merci pour l'aide.
- Edité par b0uill0n66 2 janvier 2017 à 11:21:26
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan
Erreur : IndexError: tuple index out of range
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan
Licence Pro Dev Mobile - Apprenti Manager Systèmes Informatiques et Robotiques, IMERIR Perpignan