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'), )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
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
car j'obtiens ce message d 'erreur qui bien que pertinent devrait être prise en charge par except sqlite3.IntegrityError: ???
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')
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)
Partager