python - How to insert data with SQlAlchemy declarative way -


i can add data db way:

a = model_tbl_name("3", "da", "3", "eheeee", "", "", "", "", "", "", "", "", func.now(), func.now())   db_session.add(a)  db_session.commit() 

but can't way:

data = model_tbl_name.insert().values({"title_hr":request.form['title_hr'],"text_hr":request.form['text_hr']}) 

i tried similar, no help:

data = db_session.model_tbl_name.insert().execute({"title_hr":request.form['title_hr'],"text_hr":request.form['text_hr']}) 

my initial motivation pass form data json, have work:

data = db_session.model_tbl_name.insert().execute(json.loads(new_request_form)) 

in documentation, stated can done: http://docs.sqlalchemy.org/en/rel_0_9/core/dml.html?highlight=insert%20values#sqlalchemy.sql.expression.insert.values

like this:

users.insert().values({"name": "some name"}) 

but no help, can't it. how can make work, must provide json data in values() method? how should write command make work?

second, how can grab error, because, no error in flask, stops working. can figure out how display errors when working sqlalchemy declarative way.

p.s. using flask framework, sqlalchemy, , python version 3.4

well, don't think can db_session.class_name.
can it: http://docs.sqlalchemy.org/en/rel_1_0/orm/session_basics.html

if problem default values, can define relevant default values in model, , can construct object less fields.

a = model_tbl_name(title_hr=request.form['title_hr'],                    text_hr=request.form['text_hr']) 

if still want pass dictionary, can following:

datadict = json.loads(new_request_form) = model_tbl_name(**datadict) db_session.add(a)  db_session.commit() 

imho - first method more readable , reliable (you can check validity of params - match object) -> @ end of day, more secure...


Comments