Skip to content

KeyError in initializer #34

@skrypnyk-dmytro

Description

@skrypnyk-dmytro

Hello! I need help , again)
if i use mapdict parameter for CSV file i'ts raise

builtins.KeyError
KeyError: 'sku'

but for xslx files, with same content, its work prefectly

My Route

@bp.route('/warehouse/', methods=['GET', 'POST'])
@login_required
def warehouse(id):

if request.method == 'POST':
    def article_init_func(row):
        a = Article()
        a.sku=row['sku']
        a.description=row['description']
        a.brand=row['brand']
        a.quantity=row['quantity']
        a.city=warehouse.city
        a.price=row['price']
        return a

    map_row = ['brand', 'sku', 'description', 'quantity', 'price']

    request.save_to_database(
        field_name='file', session=db.session,
        initializers = [article_init_func],
        tables=[Article],
        mapdict=map_row)
    return redirect(url_for('/shop'), code=302)

my Model

class Article(Entity, db.Model):
pricelist_id = db.Column(db.Integer, db.ForeignKey('pricelist.id'), nullable=False)
brand = db.Column(db.String(64))
sku = db.Column(db.String(64))
description = db.Column(db.String(254))
quantity = db.Column(db.Integer)
city = db.Column(db.String(64))
delivery_terms = db.Column(db.String(64))
price = db.Column(db.Integer)

my CSV

brand,sku,description,quantity,price
br,qw3234,s sdf sd ,4,23.5,
br,qw2324,sd sdf sd ,4,23.5,
br,qw3324,sdf sdf sd ,4,23.5,
br,q32324,sdfs sdf sd ,4,23.5,

traceroute

Traceback (most recent call last):
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1997, in call
return self.wsgi_app(environ, start_response)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask_compat.py", line 33, in reraise
raise value
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask_compat.py", line 33, in reraise
raise value
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functionsrule.endpoint
File "c:\users\admin\dev\4auto\venv\lib\site-packages\flask_login\utils.py", line 261, in decorated_view
return func(*args, **kwargs)
File "C:\Users\Admin\Dev\4auto\app\main\routes.py", line 88, in warehouse
mapdict=map_row)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel_webio_init_.py", line 170, in save_to_database
pe.save_as(**params)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel\core.py", line 83, in save_as
return sources.save_sheet(sheet, **dest_keywords)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel\internal\core.py", line 43, in save_sheet
return _save_any(a_source, sheet)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel\internal\core.py", line 55, in _save_any
a_source.write_data(instance)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel\plugins\sources\db_sources.py", line 64, in write_data
**self._keywords
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel\plugins\renderers\sqlalchemy.py", line 35, in render_sheet_to_stream
**keywords
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel_io\io.py", line 127, in save_data
**keywords
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel_io\io.py", line 144, in store_data
writer.write(data)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel_io\book.py", line 220, in write
sheet_writer.write_array(incoming_dict[sheet_name])
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel_io\sheet.py", line 174, in write_array
self.write_row(row)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel_io\database\importers\sqlalchemy.py", line 45, in write_row
self._write_row(new_array)
File "c:\users\admin\dev\4auto\venv\lib\site-packages\pyexcel_io\database\importers\sqlalchemy.py", line 56, in _write_row
obj = self._native_sheet.row_initializer(row)
File "C:\Users\Admin\Dev\4auto\app\main\routes.py", line 74, in article_init_func
a.sku=row['sku']
KeyError: 'sku'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions