python - 使用 Python 在 DBF 字段中添加值
问题描述
我想创建一个 dbf 文件,然后使用 python 向它添加字段和值。我可以创建 dbf 文件和字段,但不知道如何在相应字段中添加值。我有一个巨大的数据集来执行这个操作,这就是我使用循环的原因。这只是数据的示例。使用此代码,将创建 dbf 并添加字段,但不会添加这些字段中的值。任何帮助,将不胜感激。
import dbf
dctClmVal ={'a':'19', 'b':'76', 'c':'59', 'd':}
lstFields = ['a','b','c','d']
out_dbf_Path= r"C:\Users\ms\Stats\new.dbf"
db=dbf.Table(out_dbf_Path)
db.open(mode= dbf.READ_WRITE)
for clm in lstFields:
db.add_fields( clm + " C(50)")
for field in lstFields:
if(field.upper() in db.field_names):
db.append({'field=dctClmVal[field]'})
db.close()
解决方案
稍微清理一下代码后,您需要的是这样的:
import dbf
records = ({'a':'19', 'b':'76', 'c':'59', }, )
lstFields = ['a C(50)','b C(50)','c C(50)','d C(50)']
out_dbf_Path= "new.dbf"
db = dbf.Table(out_dbf_Path, lstFields)
db.open(mode=dbf.READ_WRITE)
for dctClmVal in records:
db.append(dctClmVal)
db.close()
并阅读您写的内容:
>>> with db:
... print db[0]
...
0 - a : u'19 '
1 - b : u'76 '
2 - c : u'59 '
3 - d : u' '
来自评论:
如果我的字典具有与每个键对应的列表格式的值,例如:
records = {
'a': ['2','4','6'],
'b': ['3','5','7'],
'c': ['8','9','0'],
}
如何更新我的数据库?
这比将单个记录的字段分布在不同的列表中要好得多。如果一个列表损坏,它可能会影响每一行。
注意:我从 () 中删除了它们,records
因为它们没有做任何事情。
#
# combine into individual records
#
real_records = []
for field, values in records.items():
for i, value in enumerate(values):
if len(real_records) == i:
real_records.append({})
real_records[i][field] = value
#
# now add to db
#
for record in real_records:
db.append(record)
我希望这有助于您的理解。
推荐阅读
- azure - 私有 VNet 前的 Azure LB
- maven - Selenoid - 使用 Junit 在 Maven 中的 Cucumber 4 中进行并行测试
- spring-boot - 带有 Logback 的 Spring Boot。不断收到错误,应用程序无法启动
- mpi - MPI 点对点通信:消息的顺序
- c - 为什么 C 程序对正整数给出错误的输出?
- pandas - 数据框转换 - Pandas
- python - 我该怎么做才能改进我的 Keras CNN VGG16 模型
- laravel - Laravel 多租户(多模式)因队列而失败
- android - 变量在 successListener 中变为 null
- react-native - React-Native:错误无法安装应用程序。确保您已设置 Android 开发环境