Probleme d'Objet SQLALCHEMY
bonjour
voici un code qui me pose problème
Code:
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:
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:
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
Citation:
Erreur: 'NoneType' object has no attribute 'execute'
Erreur: 'NoneType' object has no attribute 'rollback'