在python

时间:2018-04-11 14:51:27

标签: python database foxpro dbf

我想使用DBF模块根据列中的值 dist 拆分vfp dbf。因此,我提取了所有必要的索引,以便将它们用于导出。不幸的是,原始表不允许索引列表。

input_file = 'refrence.dbf'

table = dbf.Table(input_file)
l = []

for ind, record in enumerate(table.open(mode=dbf.READ_WRITE)):
    with record as r:
        if r.dist >= start and r.dist <= end:
            l.append(ind)

是否有更简单的方法来获取 n 单独的dbf文件,这些文件只包含满足 r.dist >= start and r.dist <= end 条件的行?

3 个答案:

答案 0 :(得分:1)

选择记录可以通过以下方式完成:

target_records = [rec for rec in table if start <= rec.dist <= end]

获得记录后,将它们复制到新的dbf中相当容易:

new_table = old_table.new('some_file.dbf')
with new_table:
    for record in target_records:
        new_table.append(record)

答案 1 :(得分:0)

我会尝试类似以下内容(未经测试):

def copy_range(source, destination, field_name, start, end):
    src = dbf.Table(source).open()
    dst = src.new(destination).open(dbf.READ_WRITE)  # copy structure
    for record in src:
        if start <= record[field_name] <= end:
            dst.append(record)
    src.close()
    dst.close()

然后称之为:

copy_range('refrence.dbf', 'result.dbf', 'dist', 100, 200)

答案 2 :(得分:0)

您可以像这样访问过滤表

table[l]["dist"]

table[l][fieldName]

table[l][0]

您应该使用此筛选数据制作dbf文件。