Wie Importiere ich eine .accdb-Datei in Python und die Nutzung der Daten?
Ich versuche herauszufinden, ein Weg, um erstellen Sie ein Programm, dass mir erlaubt, zu finden die beste Kombination von Daten basierend auf verschiedenen Faktoren.
Habe ich eine Microsoft Access-Datei mit der Kreatur, die Daten in es. Angriff, Verteidigung, Gesundheit, Erforderlich Schlacht Fähigkeiten zu nutzen, und einige andere bits von Informationen.
Ich versuche zu importieren .accdb (Access 2013) - Datei und Zugriff auf die gespeicherten Daten.
Ich werde versuchen, zu machen ein Programm, das scannt alle Daten und führt alle möglichen Kombinationen (sets mit 5 Kreaturen) zu finden, der die stärkste Kombination von Kreaturen für die verschiedenen benötigten Kampf-Fertigkeiten (ex: 100 battle-skill benutzen würde, Kreatur 1, 2, 3, 4 und 5, wo 125-battle-skill benutzen würde, Kreatur 3, 5, 6, 8 und 10)
Hauptsache ich brauche Hilfe mit der ersten ist in der Lage, um die Daten zu importieren Basis für einfachen Zugang, so dass ich nicht haben, um neu erstellen, die Daten in python und so kann ich mit dem gleichen Programm für die neue access-Datenbanken in die Zukunft.
Habe ich installiert https://code.google.com/p/pypyodbc/ aber kann nicht scheinen, um herauszufinden, wie man es zum laden einer vorhandenen Datei.
Bearbeiten
Ich habe versucht, den code aus Gord 's Antwort, angepasst und "meine 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()
Wurde immer ein Fehler mit der drucken-Linie Hinzugefügt ().
Ich bin jetzt immer diese Fehlermeldung, ähnlich wie das, was ich immer in der Vergangenheit.
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')
Ich sah durch die pypyodbc.py Datei auf die Zeilen, die in der Fehlermeldung genannten code, aber konnte es nicht herausfinden. Ich habe versucht, entfernen Sie das "r" am Anfang der r"Driver={Microsoft Access-Treiber (*.mdb, *.accdb)};" und versuchte Sie ein Leerzeichen zwischen r und "Treiber, weil ich nicht wusste, was es war, Aber es kam eine andere Fehlermeldung.
Bearbeiten
Ich habe meine Dateien wie vorgeschlagen. Ich glaube, ich bin mit 64bit. Habe ich überprüft, sowohl die 32-bit-und 64-bit-Versionen. Ich habe Microsoft Access-Treiber (*.mdb, *.accdb) in der 64 bit-aber nicht in der 32-bit. Ich bin mit der 2013 version von Microsoft Visual Studios.
Bearbeiten
Funktionieren jetzt!
Mein letzten funktionierenden code, falls es hilft jemand in der Zukunft.
# -*- 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()
%SystemRoot%\SysWOW64\odbcad32.exe
. Auf dem tab "Treiber", sehen Sie "Microsoft Access-Treiber (*.mdb, *.accdb)"?Ich aktualisiert meine Antwort.
Hallo, vielen Dank für das teilen dieses. Wie kommt man auf solche eine .accdb-Datei im 32-bit-linux? Ich habe installiert die
tdsodbc unixodbc
Pakete beraten Sie hier: code.google.com/archive/p/pypyodbc/wikis/... Aber Lösungen, die ich zu finden bin sind die alle eine Verbindung zu einem server. Ich will einfach nur Lesen .accdb-Datei!InformationsquelleAutor Justin | 2014-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sagen, Sie haben eine Datenbank-Datei mit dem Namen "datenbank1.accdb" mit einer Tabelle namens "Kreaturen", die folgende Daten enthalten:
Einen minimalistischen Python-Skript zum Lesen der Daten über pypyodbc auf einem Windows-Rechner würde wie folgt Aussehen:
Die resultierende Ausgabe ist
Bearbeiten
Beachten Sie, dass die Verwendung der "Microsoft Access-Treiber (*.mdb, *.accdb)" - Treiber, die Sie brauchen, um die Access-Datenbank-Engine (ein.k.ein "ACE") auf Ihrem Rechner installiert. Sie können überprüfen, ob Sie 32-bit-oder 64-bit-Python durch ausführen des folgenden Skripts:
Bewaffnet mit diesen Informationen können Sie herunterladen und installieren die passende (32-bit oder 64-bit) version von Access-Datenbank-Engine von hier
Microsoft Access Database Engine 2010 Redistributable
Für mich, dies funktioniert nicht, wenn es ein Leerzeichen vor oder nach dem entweder-gleich-Zeichen in der Verbindungszeichenfolge.
InformationsquelleAutor Gord Thompson