diff --git a/cqlengine/statements.py b/cqlengine/statements.py index 31d1ff08..8a92fb66 100644 --- a/cqlengine/statements.py +++ b/cqlengine/statements.py @@ -101,7 +101,7 @@ class WhereClause(BaseClause): def __unicode__(self): field = ('"{}"' if self.quote_field else '{}').format(self.field) - return u'{} {} {}'.format(field, self.operator, unicode(self.query_value)) + return u'{} {} ?'.format(field, self.operator) def __hash__(self): return super(WhereClause, self).__hash__() ^ hash(self.operator) @@ -129,7 +129,7 @@ class AssignmentClause(BaseClause): """ a single variable st statement """ def __unicode__(self): - return u'"{}" = :{}'.format(self.field, self.context_id) + return u'"{}" = ?'.format(self.field) def insert_tuple(self): return self.field, self.context_id @@ -170,15 +170,15 @@ class SetUpdateClause(ContainerUpdateClause): qs = [] ctx_id = self.context_id if self.previous is None and not (self._assignments or self._additions or self._removals): - qs += ['"{}" = :{}'.format(self.field, ctx_id)] + qs += ['"{}" = ?'.format(self.field)] if self._assignments: - qs += ['"{}" = :{}'.format(self.field, ctx_id)] + qs += ['"{}" = ?'.format(self.field)] ctx_id += 1 if self._additions: - qs += ['"{0}" = "{0}" + :{1}'.format(self.field, ctx_id)] + qs += ['"{0}" = "{0}" + ?'.format(self.field)] ctx_id += 1 if self._removals: - qs += ['"{0}" = "{0}" - :{1}'.format(self.field, ctx_id)] + qs += ['"{0}" = "{0}" - ?'.format(self.field)] return ', '.join(qs) @@ -232,15 +232,15 @@ class ListUpdateClause(ContainerUpdateClause): qs = [] ctx_id = self.context_id if self._assignments is not None: - qs += ['"{}" = :{}'.format(self.field, ctx_id)] + qs += ['"{}" = ?'.format(self.field)] ctx_id += 1 if self._prepend: - qs += ['"{0}" = :{1} + "{0}"'.format(self.field, ctx_id)] + qs += ['"{0}" = ? + "{0}"'.format(self.field)] ctx_id += 1 if self._append: - qs += ['"{0}" = "{0}" + :{1}'.format(self.field, ctx_id)] + qs += ['"{0}" = "{0}" + ?'.format(self.field)] return ', '.join(qs) @@ -356,10 +356,10 @@ class MapUpdateClause(ContainerUpdateClause): ctx_id = self.context_id if self.previous is None and not self._updates: - qs += ['"int_map" = :1'] + qs += ['"int_map" = ?'] else: for _ in self._updates or []: - qs += ['"{}"[:{}] = :{}'.format(self.field, ctx_id, ctx_id + 1)] + qs += ['"{}"[?] = ?'.format(self.field)] ctx_id += 2 return ', '.join(qs) @@ -380,7 +380,7 @@ class CounterUpdateClause(ContainerUpdateClause): def __unicode__(self): delta = self.value - self.previous sign = '-' if delta < 0 else '+' - return '"{0}" = "{0}" {1} :{2}'.format(self.field, sign, self.context_id) + return '"{0}" = "{0}" {1} ?'.format(self.field, sign) class BaseDeleteClause(BaseClause): @@ -428,7 +428,7 @@ class MapDeleteClause(BaseDeleteClause): def __unicode__(self): if not self._analyzed: self._analyze() - return ', '.join(['"{}"[:{}]'.format(self.field, self.context_id + i) for i in range(len(self._removals))]) + return ', '.join(['"{}"[?]'.format(self.field) for i in range(len(self._removals))]) class BaseCQLStatement(object): @@ -626,7 +626,7 @@ class InsertStatement(AssignmentStatement): qs += ["({})".format(', '.join(['"{}"'.format(c) for c in columns]))] qs += ['VALUES'] - qs += ["({})".format(', '.join([':{}'.format(v) for v in values]))] + qs += ["({})".format(', '.join(['?' for v in values]))] if self.ttl: qs += ["USING TTL {}".format(self.ttl)] diff --git a/cqlengine/tests/statements/test_assignment_clauses.py b/cqlengine/tests/statements/test_assignment_clauses.py index 126dd986..48f58edc 100644 --- a/cqlengine/tests/statements/test_assignment_clauses.py +++ b/cqlengine/tests/statements/test_assignment_clauses.py @@ -25,7 +25,7 @@ class SetUpdateClauseTests(TestCase): self.assertIsNone(c._removals) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = :0') + self.assertEqual(str(c), '"s" = ?') ctx = {} c.update_context(ctx) @@ -75,7 +75,7 @@ class SetUpdateClauseTests(TestCase): self.assertIsNone(c._removals) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = "s" + :0') + self.assertEqual(str(c), '"s" = "s" + ?') ctx = {} c.update_context(ctx) @@ -91,7 +91,7 @@ class SetUpdateClauseTests(TestCase): self.assertEqual(c._removals, {3}) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = "s" - :0') + self.assertEqual(str(c), '"s" = "s" - ?') ctx = {} c.update_context(ctx) @@ -107,7 +107,7 @@ class SetUpdateClauseTests(TestCase): self.assertEqual(c._removals, {1}) self.assertEqual(c.get_context_size(), 2) - self.assertEqual(str(c), '"s" = "s" + :0, "s" = "s" - :1') + self.assertEqual(str(c), '"s" = "s" + ?, "s" = "s" - ?') ctx = {} c.update_context(ctx) @@ -126,7 +126,7 @@ class ListUpdateClauseTests(TestCase): self.assertIsNone(c._prepend) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = :0') + self.assertEqual(str(c), '"s" = ?') ctx = {} c.update_context(ctx) @@ -142,7 +142,7 @@ class ListUpdateClauseTests(TestCase): self.assertIsNone(c._prepend) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = :0') + self.assertEqual(str(c), '"s" = ?') ctx = {} c.update_context(ctx) @@ -158,7 +158,7 @@ class ListUpdateClauseTests(TestCase): self.assertIsNone(c._prepend) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = :0') + self.assertEqual(str(c), '"s" = ?') ctx = {} c.update_context(ctx) @@ -174,7 +174,7 @@ class ListUpdateClauseTests(TestCase): self.assertIsNone(c._prepend) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = "s" + :0') + self.assertEqual(str(c), '"s" = "s" + ?') ctx = {} c.update_context(ctx) @@ -190,7 +190,7 @@ class ListUpdateClauseTests(TestCase): self.assertEqual(c._prepend, [1, 2]) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = :0 + "s"') + self.assertEqual(str(c), '"s" = ? + "s"') ctx = {} c.update_context(ctx) @@ -207,7 +207,7 @@ class ListUpdateClauseTests(TestCase): self.assertEqual(c._prepend, [1, 2]) self.assertEqual(c.get_context_size(), 2) - self.assertEqual(str(c), '"s" = :0 + "s", "s" = "s" + :1') + self.assertEqual(str(c), '"s" = ? + "s", "s" = "s" + ?') ctx = {} c.update_context(ctx) @@ -225,7 +225,7 @@ class ListUpdateClauseTests(TestCase): self.assertIsNone(c._prepend) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"s" = :0') + self.assertEqual(str(c), '"s" = ?') ctx = {} c.update_context(ctx) @@ -241,7 +241,7 @@ class MapUpdateTests(TestCase): self.assertEqual(c._updates, [3, 5]) self.assertEqual(c.get_context_size(), 4) - self.assertEqual(str(c), '"s"[:0] = :1, "s"[:2] = :3') + self.assertEqual(str(c), '"s"[?] = ?, "s"[?] = ?') ctx = {} c.update_context(ctx) @@ -254,7 +254,7 @@ class MapUpdateTests(TestCase): self.assertEqual(c._updates, [3, 5]) self.assertEqual(c.get_context_size(), 4) - self.assertEqual(str(c), '"s"[:0] = :1, "s"[:2] = :3') + self.assertEqual(str(c), '"s"[?] = ?, "s"[?] = ?') ctx = {} c.update_context(ctx) @@ -275,7 +275,7 @@ class CounterUpdateTests(TestCase): c.set_context_id(5) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"a" = "a" + :5') + self.assertEqual(str(c), '"a" = "a" + ?') ctx = {} c.update_context(ctx) @@ -286,7 +286,7 @@ class CounterUpdateTests(TestCase): c.set_context_id(3) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"a" = "a" - :3') + self.assertEqual(str(c), '"a" = "a" - ?') ctx = {} c.update_context(ctx) @@ -297,7 +297,7 @@ class CounterUpdateTests(TestCase): c.set_context_id(5) self.assertEqual(c.get_context_size(), 1) - self.assertEqual(str(c), '"a" = "a" + :5') + self.assertEqual(str(c), '"a" = "a" + ?') ctx = {} c.update_context(ctx) @@ -313,7 +313,7 @@ class MapDeleteTests(TestCase): self.assertEqual(c._removals, [1, 5]) self.assertEqual(c.get_context_size(), 2) - self.assertEqual(str(c), '"s"[:0], "s"[:1]') + self.assertEqual(str(c), '"s"[?], "s"[?]') ctx = {} c.update_context(ctx) diff --git a/cqlengine/tests/statements/test_delete_statement.py b/cqlengine/tests/statements/test_delete_statement.py index 9ac95543..ada5b720 100644 --- a/cqlengine/tests/statements/test_delete_statement.py +++ b/cqlengine/tests/statements/test_delete_statement.py @@ -31,7 +31,7 @@ class DeleteStatementTests(TestCase): def test_where_clause_rendering(self): ds = DeleteStatement('table', None) ds.add_where_clause(WhereClause('a', EqualsOperator(), 'b')) - self.assertEqual(unicode(ds), 'DELETE FROM table WHERE "a" = :0', unicode(ds)) + self.assertEqual(unicode(ds), 'DELETE FROM table WHERE "a" = ?', unicode(ds)) def test_context_update(self): ds = DeleteStatement('table', None) @@ -39,7 +39,7 @@ class DeleteStatementTests(TestCase): ds.add_where_clause(WhereClause('a', EqualsOperator(), 'b')) ds.update_context_id(7) - self.assertEqual(unicode(ds), 'DELETE "d"[:8] FROM table WHERE "a" = :7') + self.assertEqual(unicode(ds), 'DELETE "d"[?] FROM table WHERE "a" = ?') self.assertEqual(ds.get_context(), {'7': 'b', '8': 3}) def test_context(self): diff --git a/cqlengine/tests/statements/test_insert_statement.py b/cqlengine/tests/statements/test_insert_statement.py index 5e22d7d9..eeffe556 100644 --- a/cqlengine/tests/statements/test_insert_statement.py +++ b/cqlengine/tests/statements/test_insert_statement.py @@ -17,7 +17,7 @@ class InsertStatementTests(TestCase): self.assertEqual( unicode(ist), - 'INSERT INTO table ("a", "c") VALUES (:0, :1)' + 'INSERT INTO table ("a", "c") VALUES (?, ?)' ) def test_context_update(self): @@ -28,7 +28,7 @@ class InsertStatementTests(TestCase): ist.update_context_id(4) self.assertEqual( unicode(ist), - 'INSERT INTO table ("a", "c") VALUES (:4, :5)' + 'INSERT INTO table ("a", "c") VALUES (?, ?)' ) ctx = ist.get_context() self.assertEqual(ctx, {'4': 'b', '5': 'd'}) diff --git a/cqlengine/tests/statements/test_update_statement.py b/cqlengine/tests/statements/test_update_statement.py index 86dbc8be..9fe32a1a 100644 --- a/cqlengine/tests/statements/test_update_statement.py +++ b/cqlengine/tests/statements/test_update_statement.py @@ -16,7 +16,7 @@ class UpdateStatementTests(TestCase): us.add_assignment_clause(AssignmentClause('a', 'b')) us.add_assignment_clause(AssignmentClause('c', 'd')) us.add_where_clause(WhereClause('a', EqualsOperator(), 'x')) - self.assertEqual(unicode(us), 'UPDATE table SET "a" = :0, "c" = :1 WHERE "a" = :2', unicode(us)) + self.assertEqual(unicode(us), 'UPDATE table SET "a" = ?, "c" = ? WHERE "a" = ?', unicode(us)) def test_context(self): us = UpdateStatement('table') @@ -31,7 +31,7 @@ class UpdateStatementTests(TestCase): us.add_assignment_clause(AssignmentClause('c', 'd')) us.add_where_clause(WhereClause('a', EqualsOperator(), 'x')) us.update_context_id(3) - self.assertEqual(unicode(us), 'UPDATE table SET "a" = :4, "c" = :5 WHERE "a" = :3') + self.assertEqual(unicode(us), 'UPDATE table SET "a" = ?, "c" = ? WHERE "a" = ?') self.assertEqual(us.get_context(), {'4': 'b', '5': 'd', '3': 'x'}) def test_additional_rendering(self): diff --git a/cqlengine/tests/statements/test_where_clause.py b/cqlengine/tests/statements/test_where_clause.py index 938a2b49..083f1542 100644 --- a/cqlengine/tests/statements/test_where_clause.py +++ b/cqlengine/tests/statements/test_where_clause.py @@ -14,8 +14,8 @@ class TestWhereClause(TestCase): """ tests that where clauses are rendered properly """ wc = WhereClause('a', EqualsOperator(), 'c') wc.set_context_id(5) - self.assertEqual('"a" = :5', unicode(wc)) - self.assertEqual('"a" = :5', str(wc)) + self.assertEqual('"a" = ?', unicode(wc)) + self.assertEqual('"a" = ?', str(wc)) def test_equality_method(self): """ tests that 2 identical where clauses evaluate as == """