我正在使用Visual Fox Pro数据库(.dbf文件),并且正在使用dbf python模块.这里是一个例子:
myDb = VfpTable('table.dbf');
现在,通过执行以下操作,我可以排除已删除的项目:
myDb._use_deleted = None;
我的问题是有没有更简单的方法来做到这一点?也许有功能吗?我讨厌访问“私有”变量.另外,不设置此属性,如何确定行是否已删除?从技术上讲,它们仍然在数据库中,因此有标记吗?隐藏的列?也许对这个python模块或Visual Fox Pro有更多了解的人有些想法.
解决方法:
如果您以前听过以下内容,请阻止我:“”“我有一个DBF读取模块(pydbfrw),我一直打算发布“这些日子之一”.”“”
添加所需的功能比迷惑dbf模块的源代码要容易得多:
>>> import pydbfrw
>>> d = pydbfrw.DBFreader('/devel/dbf/all_files/del.dbf')
>>> list(d)
[['fred', 1], ['harriet', 4]]
>>> d.get_field_names()
['NAME', 'AMT']
>>> d = pydbfrw.DBFreader('/devel/dbf/all_files/del.dbf', include_deleted=True)
>>> list(d)
[[False, 'fred', 1], [True, 'tom', 2], [True, 'dick', 3], [False, 'harriet', 4]]
>>> d.get_field_names()
['deleted__', 'NAME', 'AMT']
>>> for rowdict in d.get_dicts():
... print rowdict
...
{'deleted__': False, 'name': 'fred', 'amt': 1}
{'deleted__': True, 'name': 'tom', 'amt': 2}
{'deleted__': True, 'name': 'dick', 'amt': 3}
{'deleted__': False, 'name': 'harriet', 'amt': 4}
>>> for rowtup in d.get_namedtuples():
... print rowtup
...
Row(deleted__=False, name='fred', amt=1)
Row(deleted__=True, name='tom', amt=2)
Row(deleted__=True, name='dick', amt=3)
Row(deleted__=False, name='harriet', amt=4)
>>>