Problème Base donneé MSACCESS avec sqlalchemy_msacess
Bonjour
Je cherche a me connecter sur une base MSACCESS avec Sqlalchemy
Version python : 3.10
Système ; windows
les prérequis PIP sont présent
- SQLAlchemy 1.4.26
- sqlalchemy-access 1.1.1
les prérequis windows sont :
- une connexion odbc
- et un paramètrage odbc sur la base MSacess en local avec le paramête ExtendedAnsiSql spécifier par la docs sqlalchemy-access
de d'insert basic ne sont plus présente...?
LE code
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| # coding: utf-8
from sqlalchemy import Column, Integer, Text , String, create_engine ,ForeignKey
from sqlalchemy.orm import scoped_session, sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import delete, insert , update , func ,select , null
# Base class used by my classes (my entities)
Base_Msaccess = declarative_base() # Required
class T_toto( Base_Msaccess ):
__tablename__ = 'toto'
ID_TOTO = Column(Integer, primary_key=True, autoincrement=True)
Nom = Column(String(100) )
class T_titi( Base_Msaccess ):
__tablename__ = 'titi'
ID_Titi = Column(Integer, primary_key=True, autoincrement=True)
Nom = Column(String(100) )
Age = Column(Integer, default =1)
if __name__ == '__main__':
DBSession_msacesss = scoped_session(sessionmaker())
engine_msacess = create_engine("access+pyodbc://@RCG-base-Accss")
Base_Msaccess.metadata.create_all(engine_msacess) # uniquement à la creation installe les tables
DBSession_msacesss.remove()
DBSession_msacesss.configure(bind=engine_msacess, autoflush=False, expire_on_commit=False)
Base_Msaccess.metadata.drop_all(engine_msacess)
Base_Msaccess.metadata.create_all(engine_msacess)
stmt = (insert(T_toto).values(Nom ='toto1'))
try:
DBSession_msacesss.execute(stmt)
except Exception as erreur:
print(erreur)
stmt = (insert(T_titi).values(Nom ='lou',Age=9))
try:
DBSession_msacesss.execute(stmt)
except Exception as erreur:
print(erreur) |
voici le message que j'obtiens
cursor.execute(statement, parameters)
sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('HY000', '[HY000] [Microsoft][Pilote ODBC Microsoft Access] Impossible d’ouvrir la base de données «\xa0|\xa0».
Ce n’est peut-être pas une base de données que votre application reconnaît, ou le fichier est peut-être endommagé. (-1206) (SQLExecDirectW)')
[SQL:
DROP TABLE toto]
(Background on this error at: https://sqlalche.me/e/14/dbapi)
Le plus curieux est que si je cherche a créer la table toto via sql avec DBeaver ; j'ai une erreur pour table existante... Mais la table n'est pas dans la liste .
Si le regarde avec le logiciel msAcess de windowe la table existe.
il semble que sqlalchmemy cherche a détruire la table alors que celle-ci existe hors sur d'autre utlisation d'SQL alchemy si la table existe le processus ne cherche pas à la détruire...???
Problème ODBC Source de données introuvable et nom de pilote non spécifié (0) (SQLDriverConnect)')
bonjour
JE viens d'installer une nouvelle machine, lorsque je lance ce code python qui fonctionne par ailleurs sur une autre machine
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
import pyodbc
try :
connStr = (
r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};"
r"DBQ=D:\eclipse-workspace\RIFT\Base\rcg.mdb;"
)
cnxn = pyodbc.connect(connStr)
cursor = cnxn.cursor()
print("-----------")
cursor.execute('SELECT * FROM Bionics')
row = cursor.fetchall()
if row :
print(row, '\n')
except Exception as erreur:
print("Erreur:" , erreur)
finally:
print("")
pass |
j'obtiens ce message.
Citation:
Erreur: ('IM002', '[IM002] [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié (0) (SQLDriverConnect)')
Ce message est habituellement obtenu si la référence à la base msacces est erronée "D:\eclipse-workspace\RIFT\Base\rcg.mdb" mais j'ai bien la base dans ce répertoire?
De plus odbc 32 et 64 bit on bien une source ms access Database?
je viens même d'ajouter une source de données spécifique qui pointe sur la base MS access .
et je peux consulter la base avec des outils de consultation telque dbeaver ?
pyodbc version 4.0.32 est installé?
je peux eventuellement installer les versions 8.0.27 d' Odbc mais l’à-propos dit qu' ODBC est en version 10.0.19041.1
mysql-connector-odbc-8.0.27-winx64
mysql-connector-odbc-8.0.27-win32