How to update PickleType column using "DBSession.execute()"

class MyTable(DeclarativeBase):
    __tablename__ = 'mytable'
    context = Column(PickleType)


*Attempt 1
========
*
context = {"k1":{"n1":"bbla"}, "k2":{"n2":"bbla"}}
context = pickle.dumps(context)
DBSession.execute("update mytable set context='%s' where t_id=%s;" 
%(context, id))
DBSession.execute("commit;")

*Error
--------*
ProgrammingError: (ProgrammingError) (1064, "You have an error in your SQL 
syntax; check the manual that corresponds to your MySQL server version for 
the right syntax to use near 'shortD'\np1\nS'bla bla 
bla%s'\np2\nsS'child'\np3\n(dp4\nS'im' at line 1") u"update mytable set 
context='(dp0\nS'shortD'\np1\nS'blabla 
%%s'\np2\nsS'child'\np3\n(dp4\nS'import_disk'\np5\n(dp6\nS't_id'\np7\nL11092L\nsssS'shortDP'\np8\n(V2\np9\ntp10\nsS'description'\np11\ng2\nsS'descParams'\np12\n(V2\np13\ntp14\ns.'
 
where t_id=11091;"


*Attempt 2
========*

context = {"k1":{"n1":"bbla"}, "k2":{"n2":"bbla"}}
context = re.escape(str(context))
context = pickle.dumps(context)
DBSession.execute("update mytable set context='%s' where t_id=%s;" 
%(context, id))
DBSession.execute("commit;")
*
Error
--------*
ProgrammingError: (ProgrammingError) (1064, "You have an error in your SQL 
syntax; check the manual that corresponds to your MySQL server version for 
the right syntax to use near 'shortDesc\\\\'\\\\:\\\\ \\\\'bla\\\\ bla\\\\ 
bla\\\\ \\\\%s\\\\'\\\\,\\\\ \\\\'child\\\\_' at line 1") u'update mytable 
set context=\'S"\\\\{\\\\\'shortD\\\\\'\\\\:\\\\ \\\\\'bla\\\\ bla\\\\ 
bla\\\\ \\\\%%s\\\\\'\\\\,\\\\ \\\\\'child\\\\_s\\\\\'\\\\:\\\\ 
\\\\{\\\\\'import\\\\_disk\\\\\'\\\\:\\\\ 
\\\\{\\\\\'t\\\\_id\\\\\'\\\\:\\\\ 11145L\\\\}\\\\}\\\\,\\\\ 
\\\\\'shortDP\\\\\'\\\\:\\\\ \\\\(u\\\\\'2\\\\\'\\\\,\\\\)\\\\,\\\\ 
\\\\\'description\\\\\'\\\\:\\\\ \\\\\'bla\\\\ Virtual\\\\ bla\\\\ 
\\\\%%s\\\\\'\\\\,\\\\ \\\\\'descP\\\\\'\\\\:\\\\ 
\\\\(u\\\\\'2\\\\\'\\\\,\\\\)\\\\}"\np0\n.\' where t_id=11144;'


*Note:
=====*
* I want to use only DBSession.execute("").

* I know that following code will works, But i want to use 
DBSession.execute(""). 
DBSession.query(MyTable).filter(MyTable.t_id==id).update(values=dict(context=context))


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to