J'essaie d'utiliser pyobdc
pour lire les données d'une base de données paradoxe et j'obtiens toujours l'erreur suivante lorsque je tente de me connecter à la base de données:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
J'ai essayé de créer de nouveaux liens DNS pour la base de données, mais cela n'a pas aidé à rien.
Les liens de mon système ressemblent à ceci:
Mon code est:
import os
import sys
import time
import pyodbc
LOCATION = "c:\Users\Marcello\Desktop\DATA\ScorMonitor.db"
cnxn = pyodbc.connect(r"Driver={{Microsoft Paradox Driver (*.db )}};Fil=Paradox 5.X;DefaultDir={0};Dbq={0}; CollatingSequence=ASCII;")
cursor = cnxn.cursor()
cursor.execute("select last, first from test")
row = cursor.fetchone()
print row
Deux réflexions sur ce qu'il faut vérifier:
1) Votre chaîne de connexion est incorrecte. Il existe un moyen d'obtenir une bonne chaîne de connexion connue directement à partir du programme administrateur ODBC (extrait de http://www.visokio.com/kb/db/dsn-less-odbc ). Ces instructions supposent que vous utilisez une MDB, mais le même processus fonctionnera pour un fichier paradoxe.
Dans le fichier DSN, vous pouvez voir quelque chose de similaire à:
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:\
DBQ=C:\db1.mdb
Pour convertir ce qui précède en chaîne de connexion complète:
Cela vous donne la chaîne de connexion complète. Dans cet exemple, la chaîne devient:
DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;axScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\;DBQ=C:\db1.mdb
2) incompatibilité 32/64 bits. J'ai eu des problèmes lors du mélange de python 32 bits avec des pilotes 64 bits, ou inversement. Vous voudrez peut-être vérifier votre interpréteur Python et votre pilote de base de données.
Le raccourci pour configurer les sources de données ODBC peut pointer vers les sources de données 32 bits au lieu de 64 bits.
Accédez au panneau de configuration -> Outils d'administration -> Sélectionnez les sources de données (ODBC) -> puis cliquez avec le bouton droit de la souris sur ce fichier -> sélectionnez Propriétés -> dans l'onglet de raccourci -> modifiez le chemin d'accès de %windir%\System32\odbcad32.exe
à
%windir%\SysWOW64\odbcad32.exe
Merci pour la question, j'avais un problème similaire, et cette question ainsi que les réponses m'aidaient à trouver ce dont j'avais besoin… .. Le problème pour moi a fini par être une discordance entre Python 64 bits et 32 bits ODBC Pilote sous Windows 10 (comme l'a suggéré Chad Kennedy). J'exécute une édition de Fall Creators entièrement mise à jour et Microsoft Office Pro 2016 est installé. Le programme d'installation de MS Office utilise toujours par défaut une installation 32 bits (ne me démarrez pas ...). Il ne pose pas de question à ce sujet au moment de l'installation. Imaginez donc ma surprise lorsque j'ai découvert que j'exécutais Office 32 bits. . De ce fait, il installe le pilote ODBC 32 bits pour MS Access. Vous pouvez cliquer sur un petit lien imperceptible dans la boîte de dialogue du programme d'installation de MS Office pour forcer l'installation 64 bits.
Une installation Python 64 bits ne fonctionnera pas avec le pilote Microsoft Access ODBC 32 bits et Microsoft ne vous laissera pas installer le pilote ODBC 64 bits si vous disposez de MS Office 32 bits. installé sur la machine.
Le correctif consistait à UNINSTALL MS Office et à le réinstaller à l'aide de ce petit lien dans la boîte de dialogue d'installation pour lui indiquer de l'installer en 64 bits. Ne vous inquiétez pas, il mémorise tous vos fichiers et paramètres récents, ainsi que vos comptes de messagerie dans Outlook. Cela fait, le pilote ODBC 64 bits et mon code Python se sont connectés à la base de données sans aucun problème supplémentaire.