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
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)
Voici 2 codifications et utilisation de la fonction init_sqlalchemy_rcg_fr().

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'