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.