Comment importer un fichier .accdb en Python et utiliser les données?

Je suis en train d'essayer de trouver un moyen de créer un programme qui me permet de trouver la meilleure combinaison de données basé sur plusieurs facteurs.

J'ai un fichier Microsoft Access avec la créature de données. Attaque, Défense, de la Santé, Requis les compétences de Combat à utiliser et plusieurs autres morceaux de l'info.

J'essaie de l'importer .accdb d'Accès (2013) de fichier et d'être en mesure d'accéder aux données stockées.

Je vais essayer de faire un programme qui analyse toutes les données et exécute toutes les combinaisons possibles (séries de 5 créatures) pour trouver la combinaison la plus forte de créatures pour les différents bataille de compétences (ex: 100 les compétences de combat serait d'utiliser la créature 1, 2, 3, 4 et 5, où 125 les compétences de combat serait d'utiliser créature 3, 5, 6, 8 et 10)

La principale chose que j'ai besoin d'aide pour être en mesure d'importer la base de données pour un accès facile donc je n'ai pas de recréer les données en python et si je peux utiliser le même programme pour les nouvelles bases de données d'accès dans l'avenir.

J'ai installé https://code.google.com/p/pypyodbc/ mais n'arrive pas à comprendre comment l'obtenir pour charger un fichier existant.

Modifier

J'ai essayé d'utiliser le code de Gord réponse, modifié pour l'adapter à mes info.

# -*- coding: utf-8 -*-
import pypyodbc
pypyodbc.lowercase = False
conn = pypyodbc.connect(
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
    r"Dbq=C:\Users\Ju\Desktop\Dark Summoner.accdb;")
cur = conn.cursor()
cur.execute("SELECT Number, Name, Atk, Def, HP, BP, Species, Special FROM Impulse AA+");
while True:
    row = cur.fetchone()
    if row is None:
        break
    print (u"Creature with Number {1} is {1} ({2})".format(
        row.get("CreatureID"), row.get("Name_EN"), row.get("Name_JP")))
cur.close()
conn.close()

Était d'avoir une erreur avec la ligne d'impression de sorte ajoutée () autour d'elle.

Je suis maintenant obtenir cette erreur, semblable à ce que je faisait dans le passé.

Traceback (most recent call last):
  File "C:\Users\Ju\Desktop\Test.py", line 6, in <module>
    r"Dbq=C:\Users\Ju\Desktop\Dark Summoner.accdb;")
  File "C:\Python34\lib\site-packages\pypyodbc-1.3.3-py3.4.egg\pypyodbc.py", line 2434, in __init__
    self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly)
  File "C:\Python34\lib\site-packages\pypyodbc-1.3.3-py3.4.egg\pypyodbc.py", line 2483, in connect
    check_success(self, ret)
  File "C:\Python34\lib\site-packages\pypyodbc-1.3.3-py3.4.egg\pypyodbc.py", line 988, in check_success
    ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)
  File "C:\Python34\lib\site-packages\pypyodbc-1.3.3-py3.4.egg\pypyodbc.py", line 964, in ctrl_err
    raise Error(state,err_text)
pypyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified')

J'ai regardé à travers la pypyodbc.py fichier les lignes mentionnées dans le code de l'erreur, mais ne pouvait pas le comprendre. J'ai essayé d'enlever le "r" à partir du début de la r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" et essayé un espace entre le r et le "Pilote parce que je ne savais pas ce que c'était, Mais j'ai reçu un autre message d'erreur.

Modifier

J'ai vérifié mes fichiers comme le suggère. Je crois que je suis en cours d'exécution 64 bits. J'ai vérifié à la fois 32 bits et les versions 64 bits. J'ai Microsoft Access Driver (*.mdb, *.accdb) dans le 64 bits, mais pas dans le 32 bits. Je suis l'aide de la version 2013 de Microsoft Visual studio.

Modifier

De travail maintenant!

Mon dernier code de travail dans le cas où il peut aider n'importe qui dans l'avenir.

# -*- coding: utf-8 -*-
import pypyodbc
pypyodbc.lowercase = False
conn = pypyodbc.connect(
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
    r"Dbq=C:\Users\Ju\Desktop\Dark Summoner.accdb;")
cur = conn.cursor()
cur.execute("SELECT Number, ID, Name, Atk, Def, HP, BP, Species, Special FROM Impulse_AA");
while True:
    row = cur.fetchone()
    if row is None:
        break
    print (u"ID: {1} {2} Atk:{3} Def:{4} HP:{5} BP:{6} Species: {7} {8}".format(
        row.get("Number"), row.get("ID"), row.get("Name"), row.get("Atk"),
        row.get("Def"), row.get("HP"), row.get("BP"), row.get("Species"), row.get("Special") ))
cur.close()
conn.close()

source d'informationauteur Justin