0
0 комментариев

Использую самописный скрипт для выгрузки данных из legacy-продуктачерез ods-документы.

Текущая реализация:

import ezodf
from . import db
 
ezodf.config.set_table_expand_strategy('all')
current_spreadsheet = ezodf.opendoc(filename='./table1.ods')
current_table = current_spreadsheet.sheets[-1]
for row_num in range(current_table.nrows()):
    db.session.add(
        Model_1(
            id=current_table['a%s' % row_num].value,
            name=current_table['b%s' % row_num].value
            )
    )
 
db.session.commit()

Так, как таблиц весьма приличное количество и они имеют разную структуру хотелось бы причесать код вот так:

with ezodf.opendoc(filename='./table1.ods') as spreadsheet:
    with spreadsheet.sheets[-1] as table:
        for row_num in range(table.nrows()):
            db.session.add(
                Model_1(
                    id=table['a%s' % row_num].value,
                    name=table['b%s' % row_num].value
                 )
            )

Но при выполнении второго варианта получаю следующее:

File "uploader.py", line 36, in <module>
    with ezodf.opendoc(filename='./table_1.ods') as spreadsheet:
AttributeError: __exit__

Как обойти/отловить данную ошибку?

ezodf - 0.3.2
lxml - 3.7.2
python - 3.5


Добавить комментарий