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
Vous devez vous connecter pour publier un commentaire.
Dire que vous avez un fichier de base de données nommé "Database1.accdb" avec une table nommée "Créatures" contenant les données suivantes:
Minimaliste script Python pour lire les données via pypyodbc sur une machine Windows ressemblerait à quelque chose comme ceci:
Le résultat est
Modifier
Noter que l'utilisation de la "Microsoft Access Driver (*.mdb, *.accdb)" pilote dont vous avez besoin pour avoir l'Accès au Moteur de Base de données (un.k.un "ACE") installé sur votre machine. Vous pouvez vérifier si vous avez 32-bits ou 64-bits Python en exécutant le script suivant:
Armé de cette information, vous pouvez télécharger et installer la correspondance (32-bit ou 64-bit) version de la Base de données Access Moteur à partir d'ici
Microsoft Access Database Engine 2010 Redistribuable