Я пытаюсь скопировать таблицу Visual FoxPro 9 в dbf / ftp, добавить к ней пару столбцов и заполнить их некоторыми данными из pandas DataFrame. Я использую модуль dbf , который, кажется, хорошо работает для большинства моих приложений.
На этот раз я столкнулся с проблемой c: хотя мой код действительно создает новая таблица и довольно неплохо ее заполняет, я совершенно не могу получить доступ к полям memo впоследствии в FoxPro или в моем (довольно устаревшем) программном обеспечении, которое все еще работает на нем и которому нужны эти новые столбцы.
поля memo загружается как «имя M» и переносится в новую таблицу как есть. Моя версия библиотеки - 0.98.3, и Конда сообщает мне, что она обновлена.
Мой код:
table = dbf.Table(dbf_path).open()
structure = table.structure()
structure[-5] = 'date T NULL' #<-- I'm doing this because the initial struc for
# this field is 'date T binary' which raise an
# exception and prevents me from doing anything
# afterwards
with table.new(new_dbf_path,
field_specs=structure,
ignore_memos=False #<-- I tried playing with this, but it didn't
) as new: # seem to change anything
new.add_fields(['field_1 N(6,0)', 'field_2 N(6,1)',
'field_3 N(6,0)', 'field_4 N(6,1)'])
count=0
for record in table:
listrec = list(record)
field_1 = data.at[count, 'field_1']
field_2 = data.at[count, 'field_2']
field_3 = data.at[count, 'field_3']
field_4 = data.at[count, 'field_4']
listrec += [field_1 if not np.isnan(field_1) else -999,
field_2 if not np.isnan(field_3) else -999,
field_3 if not np.isnan(field_4) else -999,
field_4 if not np.isnan(field_5) else -999
]
new.append(tuple(listrec))
count+=1
table.close()