Как импортировать an.accdb файл в Python и использовать данные?
Я пытаюсь найти способ создать программу, которая позволит мне найти наилучшее сочетание данных на основе нескольких различных факторов.
у меня есть файл Microsoft Access с данными существа в нем. Атака, защита, здоровье, необходимые боевые навыки для использования и несколько других бит информации.
Я пытаюсь импортировать этот .accdb (Access 2013) файл и иметь возможность доступа к сохраненным данным.
Я собираюсь попытаться сделать программу, которая сканирует все данные и запускает все возможные комбинации (наборы из 5 существ), чтобы найти самую сильную комбинацию существ для различных необходимых боевых навыков (например: 100 боевой навык будет использовать существо 1, 2, 3, 4 и 5, где 125 боевой навык будет использовать существо 3, 5, 6, 8 и 10)
главное, что мне нужна помощь в первую очередь, это возможность импортировать базу данных для легкого доступа, поэтому мне не нужно воссоздавать данные в python, и поэтому я могу использовать ту же программу для новых баз данных access в будущем.
Я установил https://code.google.com/p/pypyodbc/ но, похоже, не может понять, как заставить его загрузить существующий файл.
редактировать
Я попытался использовать код из ответа горда, измененный в соответствии с моей информацией.
# -*- coding: utf-8 -*-
import pypyodbc
pypyodbc.lowercase = False
conn = pypyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
r"Dbq=C:UsersJuDesktopDark 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()
получал ошибку с печатной строкой, поэтому добавил () вокруг нее.
Теперь я получаю эту ошибку, похожую на то, что я получал в прошлом.
Traceback (most recent call last):
File "C:UsersJuDesktopTest.py", line 6, in <module>
r"Dbq=C:UsersJuDesktopDark Summoner.accdb;")
File "C:Python34libsite-packagespypyodbc-1.3.3-py3.4.eggpypyodbc.py", line 2434, in __init__
self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly)
File "C:Python34libsite-packagespypyodbc-1.3.3-py3.4.eggpypyodbc.py", line 2483, in connect
check_success(self, ret)
File "C:Python34libsite-packagespypyodbc-1.3.3-py3.4.eggpypyodbc.py", line 988, in check_success
ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)
File "C:Python34libsite-packagespypyodbc-1.3.3-py3.4.eggpypyodbc.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')
Я просмотрел в pypyodbc.py файл в строках, упомянутых в коде ошибки, но не мог понять это. Я попытался удалить" r"из начала R" Driver={драйвер Microsoft Access (*.MDB-компонента.* ,accdb)}; "и попробовал пробел между R и" драйвером, потому что я не знал, для чего это было, но получил другую ошибку.
редактировать
Я проверил свои файлы как было предложено. Я считаю, что я запускаю 64bit. Я проверил как 32-битную, так и 64-битную версии. У меня есть драйвер Microsoft Access (*.MDB-компонента, *.accdb) в 64 бит, но не в 32 бит. Я использую версию 2013 Microsoft Visual Studios.
редактировать
работает сейчас!
мой окончательный рабочий код на случай, если он кому-то поможет в будущем.
# -*- coding: utf-8 -*-
import pypyodbc
pypyodbc.lowercase = False
conn = pypyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
r"Dbq=C:UsersJuDesktopDark 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 ответов
скажем, у вас есть файл базы данных с именем "Database1.accdb "с таблицей "Creatures", содержащей следующие данные:
CreatureID Name_EN Name_JP
---------- -------- -------
1 Godzilla ゴジラ
2 Mothra モスラ
минималистский скрипт Python для чтения данных через pypyodbc на машине Windows будет выглядеть примерно так:
# -*- coding: utf-8 -*-
import pypyodbc
pypyodbc.lowercase = False
conn = pypyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
r"Dbq=C:\Users\Public\Database1.accdb;")
cur = conn.cursor()
cur.execute("SELECT CreatureID, Name_EN, Name_JP FROM Creatures");
while True:
row = cur.fetchone()
if row is None:
break
print(u"Creature with ID {0} is {1} ({2})".format(
row.get("CreatureID"), row.get("Name_EN"), row.get("Name_JP")))
cur.close()
conn.close()
результирующий выход
Creature with ID 1 is Godzilla (ゴジラ)
Creature with ID 2 is Mothra (モスラ)
редактировать
обратите внимание, что для использования " драйвера Microsoft Access (*.MDB-компонента.* ,accdb) " драйвер вам нужно иметь ядро базы данных Access (a.к. A "ACE"), установленный на вашем компьютере. Вы можете проверить, есть ли у вас 32-разрядный или 64-разрядный Python, запустив следующий скрипт:
import struct
print("running as {0}-bit".format(struct.calcsize("P") * 8))
вооружившись этой информацией, вы можете загрузить и установить соответствующую (32-разрядную или 64-разрядную) версию Access Database Engine отсюда
Распространяемый Компонент Microsoft Access Database Engine 2010