2010-07-15 45 views
5

Voici ce que j'ai essayé:Comment connecter pyodbc à un accès (.mdb) de base de données

ODBC de -Find Vista données Gestionnaire de source * grâce à la recherche,

-Ajouter une nouvelle source de données du fichier * , sélectionner le pilote pour Microsoft Access (* .mdb), et sélectionner mon fichier mdb d'intérêt,

pyodbc -import de shell python et essayer:

pyodbc.connect("DSN=<that Data Source I just created>") 

je reçois le message d'erreur suivant (Portugue se **):

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Nome da fonte de dados n\xe3o encontrado e nenhum driver padr\xe3o especificado (0) (SQLDriverConnectW)') 

Ce qui se traduit par "Nom de la source de données introuvable et aucun pilote standard spécifié".

Qu'est-ce que je fais mal? Comment l'obtenir correctement? En outre, j'ai cherché sur le Web pour la documentation, mais n'a rien trouvé qui en vaille la peine, quelqu'un pourrait-il recommander une documentation?

* Les noms peuvent ne pas être complètement précis car mon Windows est en portugais.

** Non, portugais n'a pas « 3 » et « \ » en lettres, celles-ci sont mal imprimés des caractères spéciaux

Répondre

1

J'utilise odbc module (inclus dans ActiveState Python), mais testé pyodbc et pour moi fonctionne:

#db = odbc.odbc('northwind') 
#db = odbc.odbc('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;') 
#db = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb)};Dbq=Nwind.mdb;Uid=;Pwd=;') 
db = pyodbc.connect('DSN=northwind') 

Bien sûr commenté connexions fonctionne aussi.

Je configuré nothwind comme source de données utilisateur de sorte que vous devrez probablement configurer votre connexion de base de données ODBC comme source de données utilisateur ou système DSN, ou sans configuration dans l'Administrateur ODBC, vous pouvez utiliser ConnectString où vous pouvez pointer votre fichier .mdb.

2

J'ai eu un problème similaire avec pyodbc mais pas avec Access mais un pilote ODBC différent.

C'est ce qui m'a aidé. http://robertoschiabel.wordpress.com/2008/02/28/windows-x64-32bit-odbc-vs-64bit-odbc/ (ici est l'article approprié KB dans le cas où cette URL disparaît. http://support.microsoft.com/kb/942976/en-us)

Notre matériel précédent serveur est mort et nous avons dû redéployer rapidement sur un système d'exploitation 64 bits parce que c'est tout ce que nous avions qui était disponible. À l'aide de l'outil d'administration ODBC normal, j'ai ajouté le DSN nommé de manière appropriée, mais il prétend toujours qu'il n'a pas été trouvé. Ce n'est que lors de l'exécution de la version 32 bits spéciale de l'administrateur ODBC que j'ai pu définir un DSN que mon script utilisant pyodbc pouvait trouver.

1

Il est judicieux de lister vos connexions ODBC avec pyodbc pour voir ce que vous utilisez. Assurez-vous que vous utilisez un pilote pyodbc 32 bit Python 32 bits approprié. Si vous souhaitez utiliser des fichiers d'accès 64 bits, vous devez utiliser MS Access 64 bits, qui fournit le pilote.

sources = pyodbc.dataSources() 
keys = sources.keys() 
for key in keys: 
    print key