[ https://issues.apache.org/jira/browse/CASSANDRA-2993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13081291#comment-13081291 ]
Blake Visin commented on CASSANDRA-2993: ---------------------------------------- Try: {code} cql = 'UPDATE sites SET :col = :val WHERE KEY = :site_id' vals = {'col': 'feed_stats:1312493736688033024', 'site_id': '29ffb9d2-c205-11e0-a2a2-001fe14cba06', 'val': "(dp0\nS'1'\np1\n(lp2\nI1\naI2\naI3\naI4\nasS'0'\np3\n(lp4\nI1\naI2\naI3\naI4\nasS'3'\np5\n(lp6\nI1\naI2\naI3\naI4\nasS'2'\np7\n(lp8\nI1\naI2\naI3\naI4\nas."} cursor = cql.connect('cf') cursor.execute(cql, vals) {code} My Result (after patching with Tyler's pycql.txt, but not with cql-grammar.txt) I am printing out the prepared query {code} USE totalporn; UPDATE sites SET 'feed_stats:1312493736688033024' = '(dp0 S''1'' p1 (lp2 I1 aI2 aI3 aI4 asS''0'' p3 (lp4 I1 aI2 aI3 aI4 asS''3'' p5 (lp6 I1 aI2 aI3 aI4 asS''2'' p7 (lp8 I1 aI2 aI3 aI4 as.' WHERE KEY = '29ffb9d2-c205-11e0-a2a2-001fe14cba06' Traceback (most recent call last): File "/home/blake/test.py", line 10, in <module> cursor.execute(sql, vals) File "/usr/local/lib/python2.7/dist-packages/cql/cursor.py", line 135, in execute raise cql.ProgrammingError("Bad Request: %s" % ire.why) cql.ProgrammingError: Bad Request: line 30:3 mismatched character ''' expecting '.' {code} The string comes from a pickle'd dict contaning strings as keys and a list as values: {code} import pickle vals = {'col': 'feed_stats:1312493736688033024', 'site_id': '29ffb9d2-c205-11e0-a2a2-001fe14cba06', 'val': "(dp0\nS'1'\np1\n(lp2\nI1\naI2\naI3\naI4\nasS'0'\np3\n(lp4\nI1\naI2\naI3\naI4\nasS'3'\np5\n(lp6\nI1\naI2\naI3\naI4\nasS'2'\np7\n(lp8\nI1\naI2\naI3\naI4\nas."} print pickle.loads((vals['val'])) {code} returns {code} {'1': [1, 2, 3, 4], '0': [1, 2, 3, 4], '3': [1, 2, 3, 4], '2': [1, 2, 3, 4]} {code} > Issues with parameters being escaped correctly in Python CQL > ------------------------------------------------------------ > > Key: CASSANDRA-2993 > URL: https://issues.apache.org/jira/browse/CASSANDRA-2993 > Project: Cassandra > Issue Type: Bug > Environment: Python CQL > Reporter: Blake Visin > Assignee: Tyler Hobbs > Labels: CQL, parameter, python > Attachments: 2993-cql-grammar.txt, 2993-pycql.txt, > 2993-system-test.txt > > > When using parameterised queries in Python CQL strings are not being escaped > correctly. > Query and Parameters: > {code} > 'UPDATE sites SET :col = :val WHERE KEY = :site_id' > {'col': 'feed_stats:1312493736688033024', > 'site_id': '899d15e8-bd4a-11e0-bc8c-001fe14cba06', > 'val': > "(dp0\nS'1'\np1\n(lp2\nI1\naI2\naI3\naI4\nasS'0'\np3\n(lp4\nI1\naI2\naI3\naI4\nasS'3'\np5\n(lp6\nI1\naI2\naI3\naI4\nasS'2'\np7\n(lp8\nI1\naI2\naI3\naI4\nas."} > {code} > Query trying to be executed after processing parameters > {code} > "UPDATE sites SET 'feed_stats:1312493736688033024' = > '(dp0\nS''1''\np1\n(lp2\nI1\naI2\naI3\naI4\nasS''0''\np3\n(lp4\nI1\naI2\naI3\naI4\nasS''3''\np5\n(lp6\nI1\naI2\naI3\naI4\nasS''2''\np7\n(lp8\nI1\naI2\naI3\naI4\nas.' > WHERE KEY = '899d15e8-bd4a-11e0-bc8c-001fe14cba06'" > {code} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira