Python: быстрые запросы в большом файле dbf (xbase) - PullRequest
6 голосов
/ 03 марта 2010

У меня большой файл DBF (~ 700 МБ). Я хотел бы выбрать только несколько строк из него, используя скрипт Python. Я видел, что dbfpy - хороший модуль, который позволяет открывать базу данных такого типа, но пока я не нашел возможности для запросов. Итерация по всем элементам из python слишком медленная.

Могу ли я сделать то, что я хочу от python, в разумные сроки?

Ответы [ 3 ]

11 голосов
/ 13 июля 2011

Используя мой модуль dbf , вы можете создавать временные индексы, а затем выполнять поиск по ним:

import dbf

table = dbf.Table('big.dbf')
index = table.create_index(lambda rec: rec.field) # field should be actual field name

records = index.search(match=('value',))

Создание индекса может занять несколько секунд, но после этого поиск выполняется очень быстро.

2 голосов
/ 04 марта 2010

Скорее всего, ваша производительность больше связана с вводом / выводом, чем с процессором. Таким образом, лучший способ ускорить его - оптимизировать поиск. Возможно, вы захотите создать какой-то индекс с ключом, каким бы ни был ваш предикат поиска.

1 голос
/ 04 марта 2010

Если вы используете Windows, вы можете использовать модуль odbc в сочетании с Visual FoxPro ODBC Driver

...