当前位置: 首页>>代码示例>>Python>>正文


Python statements.UpdateStatement类代码示例

本文整理汇总了Python中cassandra.cqlengine.statements.UpdateStatement的典型用法代码示例。如果您正苦于以下问题:Python UpdateStatement类的具体用法?Python UpdateStatement怎么用?Python UpdateStatement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了UpdateStatement类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: update

    def update(self):
        """
        updates a row.
        This is a blind update call.
        All validation and cleaning needs to happen
        prior to calling this.
        """
        if self.instance is None:
            raise CQLEngineException("DML Query intance attribute is None")
        assert type(self.instance) == self.model
        null_clustering_key = False if len(self.instance._clustering_keys) == 0 else True
        static_changed_only = True
        statement = UpdateStatement(self.column_family_name, ttl=self._ttl, timestamp=self._timestamp,
                                    conditionals=self._conditional, if_exists=self._if_exists)
        for name, col in self.instance._clustering_keys.items():
            null_clustering_key = null_clustering_key and col._val_is_null(getattr(self.instance, name, None))

        updated_columns = set()
        # get defined fields and their column names
        for name, col in self.model._columns.items():
            # if clustering key is null, don't include non static columns
            if null_clustering_key and not col.static and not col.partition_key:
                continue
            if not col.is_primary_key:
                val = getattr(self.instance, name, None)
                val_mgr = self.instance._values[name]

                if val is None:
                    continue

                if not val_mgr.changed and not isinstance(col, columns.Counter):
                    continue

                static_changed_only = static_changed_only and col.static
                statement.add_update(col, val, previous=val_mgr.previous_value)
                updated_columns.add(col.db_field_name)

        if statement.assignments:
            for name, col in self.model._primary_keys.items():
                # only include clustering key if clustering key is not null, and non static columns are changed to avoid cql error
                if (null_clustering_key or static_changed_only) and (not col.partition_key):
                    continue
                statement.add_where(col, EqualsOperator(), getattr(self.instance, name))
            self._execute(statement)

        if not null_clustering_key:
            # remove conditions on fields that have been updated
            delete_conditionals = [condition for condition in self._conditional
                                   if condition.field not in updated_columns] if self._conditional else None
            self._delete_null_columns(delete_conditionals)
开发者ID:yzhang226,项目名称:python-driver,代码行数:50,代码来源:query.py

示例2: test_context_update

 def test_context_update(self):
     us = UpdateStatement('table')
     us.add_assignment(Column(db_field='a'), 'b')
     us.add_assignment(Column(db_field='c'), 'd')
     us.add_where(Column(db_field='a'), EqualsOperator(), 'x')
     us.update_context_id(3)
     self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = %(4)s, "c" = %(5)s WHERE "a" = %(3)s')
     self.assertEqual(us.get_context(), {'4': 'b', '5': 'd', '3': 'x'})
开发者ID:Adirio,项目名称:python-driver,代码行数:8,代码来源:test_update_statement.py

示例3: test_context_update

 def test_context_update(self):
     us = UpdateStatement('table')
     us.add_assignment_clause(AssignmentClause('a', 'b'))
     us.add_assignment_clause(AssignmentClause('c', 'd'))
     us.add_where_clause(WhereClause('a', EqualsOperator(), 'x'))
     us.update_context_id(3)
     self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = %(4)s, "c" = %(5)s WHERE "a" = %(3)s')
     self.assertEqual(us.get_context(), {'4': 'b', '5': 'd', '3': 'x'})
开发者ID:dkua,项目名称:python-driver,代码行数:8,代码来源:test_update_statement.py

示例4: test_rendering

    def test_rendering(self):
        us = UpdateStatement('table')
        us.add_assignment(Column(db_field='a'), 'b')
        us.add_assignment(Column(db_field='c'), 'd')
        us.add_where(Column(db_field='a'), EqualsOperator(), 'x')
        self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = %(0)s, "c" = %(1)s WHERE "a" = %(2)s', six.text_type(us))

        us.add_where(Column(db_field='a'), NotEqualsOperator(), 'y')
        self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = %(0)s, "c" = %(1)s WHERE "a" = %(2)s AND "a" != %(3)s', six.text_type(us))
开发者ID:datastax,项目名称:python-driver,代码行数:9,代码来源:test_update_statement.py

示例5: test_update_set_add

 def test_update_set_add(self):
     us = UpdateStatement('table')
     us.add_update(Set(Text, db_field='a'), set((1,)), 'add')
     self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = "a" + %(0)s')
开发者ID:Adirio,项目名称:python-driver,代码行数:4,代码来源:test_update_statement.py

示例6: test_additional_rendering

 def test_additional_rendering(self):
     us = UpdateStatement('table', ttl=60)
     us.add_assignment(Column(db_field='a'), 'b')
     us.add_where(Column(db_field='a'), EqualsOperator(), 'x')
     self.assertIn('USING TTL 60', six.text_type(us))
开发者ID:Adirio,项目名称:python-driver,代码行数:5,代码来源:test_update_statement.py

示例7: test_context

 def test_context(self):
     us = UpdateStatement('table')
     us.add_assignment(Column(db_field='a'), 'b')
     us.add_assignment(Column(db_field='c'), 'd')
     us.add_where(Column(db_field='a'), EqualsOperator(), 'x')
     self.assertEqual(us.get_context(), {'0': 'b', '1': 'd', '2': 'x'})
开发者ID:Adirio,项目名称:python-driver,代码行数:6,代码来源:test_update_statement.py

示例8: test_insert_statement_execute

    def test_insert_statement_execute(self):
        """
        Test to verify the execution of BaseCQLStatements using connection.execute

        @since 3.10
        @jira_ticket PYTHON-505
        @expected_result inserts a row in C*, updates the rows and then deletes
        all the rows using BaseCQLStatements

        @test_category data_types:object_mapper
        """
        partition = uuid4()
        cluster = 1
        self._insert_statement(partition, cluster)

        # Verifying update statement
        where = [WhereClause('partition', EqualsOperator(), partition),
                 WhereClause('cluster', EqualsOperator(), cluster)]

        st = UpdateStatement(self.table_name, where=where)
        st.add_assignment(Column(db_field='count'), 2)
        st.add_assignment(Column(db_field='text'), "text_for_db_update")
        st.add_assignment(Column(db_field='text_set'), set(("foo_update", "bar_update")))
        st.add_assignment(Column(db_field='text_list'), ["foo_update", "bar_update"])
        st.add_assignment(Column(db_field='text_map'), {"foo": '3', "bar": '4'})

        execute(st)
        self._verify_statement(st)

        # Verifying delete statement
        execute(DeleteStatement(self.table_name, where=where))
        self.assertEqual(TestQueryUpdateModel.objects.count(), 0)
开发者ID:datastax,项目名称:python-driver,代码行数:32,代码来源:test_base_statement.py

示例9: test_update_empty_set_removal_does_not_assign

 def test_update_empty_set_removal_does_not_assign(self):
     us = UpdateStatement('table')
     us.add_assignment_clause(SetUpdateClause('a', set(), operation='remove'))
     self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = "a" - %(0)s')
开发者ID:dkua,项目名称:python-driver,代码行数:4,代码来源:test_update_statement.py

示例10: test_update_set_add

 def test_update_set_add(self):
     us = UpdateStatement('table')
     us.add_assignment_clause(SetUpdateClause('a', set((1,)), operation='add'))
     self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = "a" + %(0)s')
开发者ID:dkua,项目名称:python-driver,代码行数:4,代码来源:test_update_statement.py

示例11: test_additional_rendering

 def test_additional_rendering(self):
     us = UpdateStatement('table', ttl=60)
     us.add_assignment_clause(AssignmentClause('a', 'b'))
     us.add_where_clause(WhereClause('a', EqualsOperator(), 'x'))
     self.assertIn('USING TTL 60', six.text_type(us))
开发者ID:dkua,项目名称:python-driver,代码行数:5,代码来源:test_update_statement.py

示例12: test_context

 def test_context(self):
     us = UpdateStatement('table')
     us.add_assignment_clause(AssignmentClause('a', 'b'))
     us.add_assignment_clause(AssignmentClause('c', 'd'))
     us.add_where_clause(WhereClause('a', EqualsOperator(), 'x'))
     self.assertEqual(us.get_context(), {'0': 'b', '1': 'd', '2': 'x'})
开发者ID:dkua,项目名称:python-driver,代码行数:6,代码来源:test_update_statement.py

示例13: test_rendering

 def test_rendering(self):
     us = UpdateStatement('table')
     us.add_assignment_clause(AssignmentClause('a', 'b'))
     us.add_assignment_clause(AssignmentClause('c', 'd'))
     us.add_where_clause(WhereClause('a', EqualsOperator(), 'x'))
     self.assertEqual(six.text_type(us), 'UPDATE table SET "a" = %(0)s, "c" = %(1)s WHERE "a" = %(2)s', six.text_type(us))
开发者ID:dkua,项目名称:python-driver,代码行数:6,代码来源:test_update_statement.py

示例14: test_update_empty_set_removal_does_not_assign

 def test_update_empty_set_removal_does_not_assign(self):
     us = UpdateStatement('table')
     us.add_update(Set(Text, db_field='a'), set(), 'remove')
     self.assertFalse(us.assignments)
开发者ID:Adirio,项目名称:python-driver,代码行数:4,代码来源:test_update_statement.py

示例15: test_update_list_append_with_empty_list

 def test_update_list_append_with_empty_list(self):
     us = UpdateStatement('table')
     us.add_update(List(Text, db_field='a'), [], 'append')
     self.assertFalse(us.assignments)
开发者ID:Adirio,项目名称:python-driver,代码行数:4,代码来源:test_update_statement.py


注:本文中的cassandra.cqlengine.statements.UpdateStatement类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。