IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

problème de monitiring d'erreur sql


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut problème de monitiring d'erreur sql
    bonjour

    Afin de vérifier le traitement d'un fichier j'ai une petite base sqllite dans laquelle j' insert Nom_fichier + date_de_reception.
    table a bien-sur un contrôle d'intégrité sur ce doublon

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE fichier (
    	"Id_fichieronglet" INTEGER NOT NULL, 
    	"Nom_fichier" VARCHAR(255) NOT NULL, 
    	date_reception INTEGER NOT NULL, 
    	PRIMARY KEY ("Id_fichieronglet"), 
    	CONSTRAINT "_Idfic" UNIQUE ("Nom_fichier", date_reception)
    );

    code slqalchemy

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class T_fichier (Base) :
        __tablename__ = 'fichier'
        Id_fichieronglet  =  Column(Integer, primary_key=True,  autoincrement=True)   
        Nom_fichier =  Column(String( 255), nullable=False)
        date_reception  = Column(Integer, nullable=False) #AAAAMMJJ
     
        __table_args__ = (UniqueConstraint('Nom_fichier', 'date_reception',name='_Idfic'),
                         )
    Code : 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
    18
    19
    20
    21
    22
    23
    24
    import sqlite3
    if __name__ == '__main__':
     
    .....
       requete_Fichier = insert(T_fichier).values(Nom_fichier =nom_fichier_in,date_reception =la_date_de_reception)
     
     
     
            try:
                Session_en_base.execute(requete_Fichier)
     
            #'''except sqlite3.IntegrityError as err:'''
            except sqlite3.IntegrityError:
                Session_en_base.rollback()
                print(f'Fichier {nom_fichier_in} déjà traiter')
                #err.error("Integrity error: %s", str(err))
     
            except  Exception as erreur:    
                print("Erreur:" , erreur)
                Session_en_base.rollback()
            else:
                Session_en_base.commit() 
     
        # Fichier excel
    je voudrais monitorer le contrôle d'intégrité pour envoyer le message "fichier déjà" traité mais il semble mon code d'exception ne soit pas utilisé ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            except sqlite3.IntegrityError:
                Session_en_base.rollback()
                print(f'Fichier {nom_fichier_in} déjà traiter')
    car j'obtiens ce message d 'erreur qui bien que pertinent devrait être prise en charge par except sqlite3.IntegrityError: ???

    Erreur: (sqlite3.IntegrityError) UNIQUE constraint failed: fichier.Nom_fichier, fichier.date_reception
    [SQL: INSERT INTO fichier ("Nom_fichier", date_reception) VALUES (?, ?)]
    [parameters: ('fichier1.txt', '27052022')]

    (Background on this error at: https://sqlalche.me/e/14/gkpj)

  2. #2
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut j'ai trouver une solution
    bonjour

    j'ai trouvé une solution sur les exceptions d' sqlalchemy.exc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from sqlalchemy.exc import  SQLAlchemyError ,DBAPIError , IntegrityError
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            except SQLAlchemyError as e:
                error = str(e.__dict__['orig'])
                if error == 'UNIQUE constraint failed: fichier.Nom_fichier, fichier.date_reception':
                   print (f"Fichier : {nom_fichier_in} déjà trié")
    la valeur de error = str(e.__dict__['orig']) est
    'UNIQUE constraint failed: fichier.Nom_fichier, fichier.date_reception'
    je vais donc trait ce cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur SQL #1064 problème
    Par Joey75 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/01/2020, 16h05
  2. [MySQL] Problème erreur SQL
    Par novice100 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/05/2012, 11h32
  3. Problème d'erreur SQL avec une DB2 sur un AS400
    Par Baboulinet_ dans le forum Langage
    Réponses: 1
    Dernier message: 11/10/2011, 11h14
  4. [SQL] Problème erreur sql bizarre
    Par baleiney dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/06/2006, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo