Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KeyError in initializer #34

Open
skrypnyk-dmytro opened this issue Oct 8, 2018 · 2 comments
Open

KeyError in initializer #34

skrypnyk-dmytro opened this issue Oct 8, 2018 · 2 comments

Comments

@skrypnyk-dmytro
Copy link

skrypnyk-dmytro commented Oct 8, 2018

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'

@skrypnyk-dmytro
Copy link
Author

ok, sorry i found solution
new init func

def article_init_func(row):
    a = Article()
    a.city=warehouse.city
    return a

@skrypnyk-dmytro
Copy link
Author

Sorry, i was wrong. My solution not save these fields what not represented in init_func
any advice?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant