Visual Fox Pro和Python

2024-05-23 19:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个visualfoxpro数据库(.dbf文件),并且使用dbf python模块。下面是一个例子:

myDb = VfpTable('table.dbf');

现在,我可以通过执行以下操作来排除已删除的项目:

^{pr2}$

我的问题是有没有更简单的方法?也许是个函数?我讨厌访问“私有”变量。另外,在不设置此属性的情况下,如何确定行是否已被删除?从技术上讲,它们仍然在数据库中,所以有标志吗?隐藏的柱子?也许对这个python模块或visualfoxpro有更多了解的人有一些想法。在


Tags: 模块文件项目方法函数数据库属性table
2条回答

使用上面引用的dbf module是:

myDB.use_deleted = False

对于个人记录:

^{pr2}$

要从表中实际删除记录,请执行以下操作:

myDB.pack()

披露:我是作者。在

如果你以前听过这个,请停止我:“我有一个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)
>>>

相关问题 更多 >