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()
(1) Ist Ihre version von Python-32-bit-oder 64-bit? (2) Ausführen %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

Schreibe einen Kommentar