03
Май
2020

Как реализовать быстрый поиск в .DBF-файле (Visual Fox Pro) с помощью Python-3.x

Есть база данных с информацией о людях (фамилия, имя, отчество, дата рождения и т.д.). Файл в формате .DBF (Visual FoxPro). Мне нужно выполнить поиск по фамилии и вывести в терминал всех людей с такой фамилией. Это можно сделать с помощью модуля DBF путем перебора всех записей в цикле, но это долго:

import dbf

surname = "Петров"
table = dbf.Table('db.DBF')
table.open()
for rec in table:
    if surname == rec[3].strip(" "): # rec[3] - это фамилия
        print(rec[3], rec[4], rec[5]) # фамилия, имя, отчество

Находил похожую проблему в интернете, решение которой удалось выполнить с помощью создания временного индекса. Примерно так:

import dbf

surname = "Петров"
table = dbf.Table('db.DBF')
table.open()
idx = table.create_index(lambda rec: rec.famil)
match = idx.search(match=surname)

Но не знаю как это правильно реализовать. Возможно кто-то мне поможет в этом.

Источник: https://ru.stackoverflow.com/questions/1119590/%D0%9A%D0%B0%D0%BA-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-%D0%B2-dbf-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5-visual-fox-pro-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-python-3-x

Тебе может это понравится...

Добавить комментарий