gpt4 book ai didi

python - 在 DBF 中搜索并更新记录

转载 作者:行者123 更新时间:2023-12-01 04:37:54 24 4
gpt4 key购买 nike

代码:

#!/usr/bin/python
db = dbf.Dbf("MEST2.DBF")
#LINE TO UPDATE:
rec = db[0]
#PROEST IS A field of my dbf. I'm assigning 1 to this field line 0
rec["PROEST"] = 1
rec.store()
del rec
db.close()

DBF 表的图像:/image/1UHE1.jpg

我的问题是我无法按行更改记录,因为产品(PROCOD)的位置可能会有所不同。

对于获取 PROCOD 并更改 PROEST 的值有什么建议吗?

更新:

#!/usr/bin/python

import dbf
db = dbf.Table('MEST2.DBF')
with db:
procod_idx = db.create_index(lambda rec: (rec.codigo, rec.procod))
match = procod_idx.search(match='000001')

# should only be one product with that code
record = match[0]
with record:
record.proest = 23

但现在的问题是,我如何根据 CODIGO 字段(股票代码)编辑值。我有多个股票 ID:(1,2,5,11)。代码仅更新第一个结果,我需要更新基于 CODIGO 字段的特定记录。

在 SQL 中将是:“UPDATE PROEST SET 32 where CODIGO=11”...或 CODIGO=2

已解决,作者:Ethan Furman

#!/usr/bin/python

import dbf
db = dbf.Table('MEST2.DBF')
with db:
procod_idx = db.create_index(lambda rec: (rec.codigo, rec.procod))
match = procod_idx.search(match=(11, '000001'))
record = match[0]
with record:
record.proest = 25
record.dt_atualiz = '14/07/15 16:52'

最佳答案

你没有说你正在使用哪个dbf包,但它看起来像mine .

您想要做的是在 PROCOD 字段上创建一个临时索引,然后您可以对其进行搜索并更新您需要的其他字段:

# untested
import dbf
db = dbf.Table('MEST2.DBF')
with db:
procod_idx = db.create_index(lambda rec: rec.procod)
# get a list of all matching records
match = procod_idx.search(match='000001')
# should only be one product with that code
record = match[0]
with record:
record.proest = ...
record.dt_atualiz = ...

如果产品代码不是唯一的,那么上面的“应该只有一个具有该代码注释的产品”是错误的。

将索引更改为:

procod_idx = db.create_index(lambda rec: (rec.codigo, rec.procod))

然后搜索:

    match = procod_idx.search(match=(11, '000001'))
record = match[0]
...
match = procod_idx.search(match=(2, '000001'))
record = match[0]
...

关于python - 在 DBF 中搜索并更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31409565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com