bonjour
voici un code qui me pose problème
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 def table_Category(sql_requete): print("Creer et Charger Table Category") cur_BaseOrigine.execute(sql_requete ) result = cur_BaseOrigine.fetchall() # fetchall() : r�cup�re toutes les lignes qui correspondent aux param�tres d�finis. for Category , in result: stmt = insert(T_Category).values(Nom_Category = Category , Type_Category='bionic') try: DBSession_rcg_fr.execute(stmt) except Exception as erreur: print("Erreur:" , erreur) DBSession_rcg_fr.rollback() else: DBSession_rcg_fr.commit() try: DBSession_rcg_gb.execute(stmt) except Exception as erreur: print("Erreur:" , erreur) DBSession_rcg_gb.rollback() else: DBSession_rcg_gb.commit()
Solution N1
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
25
26 # coding: utf-8 from sqlalchemy import delete, insert , update , func ,select from sqlalchemy import Column, Integer, Text , String, create_engine ,ForeignKey , BLOB , Float , BigInteger , Boolean, null from sqlalchemy.orm import scoped_session, sessionmaker, relationship from sqlalchemy.ext.declarative import declarative_base from dataclasses import dataclass Base = declarative_base() # prérequis def init_sqlalchemy_rcg_fr(): # Base sqllite-fr global DBSession_rcg_fr Base_rcg_fr = declarative_base() DBSession_rcg_fr = scoped_session(sessionmaker()) BaseSqllite_fr = 'baseGenFRS.db' dbname = 'sqlite:///' + BaseSqllite_fr engine_rcg_fr = create_engine(dbname, echo=False) Base.metadata.drop_all(engine_rcg_fr) # drop des tables Base.metadata.create_all(engine_rcg_fr) # uniquement � la creation installe les tables DBSession_rcg_fr.remove() DBSession_rcg_fr.configure(bind=engine_rcg_fr, autoflush=False, expire_on_commit=False) if __name__ == '__main__': sql_Bionics_Base_Access = """SELECT `Category`, `ItemName`, `Cost`, `Cat`, `Location`, `Description` FROM `Bionics`; """ table_Category(sql_Bionics_Category_Base_Access)
Solution N2
Voici 2 codifications et utilisation de la fonction init_sqlalchemy_rcg_fr().
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
25
26
27 # coding: utf-8 from sqlalchemy import delete, insert , update , func ,select from sqlalchemy import Column, Integer, Text , String, create_engine ,ForeignKey , BLOB , Float , BigInteger , Boolean, null from sqlalchemy.orm import scoped_session, sessionmaker, relationship from sqlalchemy.ext.declarative import declarative_base from dataclasses import dataclass Base = declarative_base() # prérequis def init_sqlalchemy_rcg_fr(): # Base sqllite-fr Base_rcg_fr = declarative_base() DBSession_rcg_fr = scoped_session(sessionmaker()) BaseSqllite_fr = 'baseGenFRS.db' dbname = 'sqlite:///' + BaseSqllite_fr engine_rcg_fr = create_engine(dbname, echo=False) Base.metadata.drop_all(engine_rcg_fr) # drop des tables Base.metadata.create_all(engine_rcg_fr) # uniquement � la creation installe les tables DBSession_rcg_fr.remove() DBSession_rcg_fr.configure(bind=engine_rcg_fr, autoflush=False, expire_on_commit=False) return DBSession_rcg_fr if __name__ == '__main__': sql_Bionics_Base_Access = """SELECT `Category`, `ItemName`, `Cost`, `Cat`, `Location`, `Description` FROM `Bionics`; """ DBSession_rcg_fr = init_sqlalchemy_rcg_fr() table_Category(sql_Bionics_Category_Base_Access)
L'un défini l'objet DBSession_rcg_fr en Global dans la fonction et l'autre retourne l'objet par la fonction
Mon problème est que seule la solution N1 de la variable globale semble fonctionner avec la création de l'objet.
avec la solution N° 2 j'obtiens cette erreur pour l’exécution de la fonction table_Category(sql_requete)....
l'objet pose problème
Erreur: 'NoneType' object has no attribute 'execute'
Erreur: 'NoneType' object has no attribute 'rollback'
Partager