ClickHouse会话中多次执行更新操作失效的问题求助
ClickHouse会话中多次执行更新操作失效的问题求助
大家好,我碰到一个棘手的问题:我想在同一个会话里多次更新不同行的指定列值,但只有第一次的更新查询生效了,循环里后续的更新操作都没起作用。
我是通过循环来批量执行更新的,核心业务代码如下:
for domain_data in list_domain: if not domain_data[6]: x = 0 while x < 10: update : dict = { 'status': "1", } db.update_db(update, 'domain', string_db(domain_data[0]))
对应的数据库更新方法update_db的实现代码是这样的:
def update_db(self, values_dict, column_name, column_value): column_list_string: str = '' existance_var = f"select EXISTS(select {column_name} from {self.database_name}.{self.table_name} where {column_name} = {column_value})" existance_var = self.client.execute(existance_var) if existance_var[0][0]: if values_dict.get('host_name'): del values_dict['host_name'] for name, value in values_dict.items(): column_list_string += f"{name} = {value}," column_list_string = column_list_string.rstrip(column_list_string[-1]) final_update_query: str = f"ALTER TABLE {self.database_name}.{self.table_name} UPDATE {column_list_string} WHERE {column_name} = {column_value}" try: self.client.execute(final_update_query) print("Item updated to database") except Exception as e: logging.error(f"Update has failed: {str(e)}") else: logging.error("Update has failed")
我的需求很明确:在同一个会话里,把多行数据的status字段都更新为1,但目前只有第一次循环的更新成功了,后面的更新操作都没效果,有没有大佬能帮我排查下问题出在哪?
备注:内容来源于stack exchange,提问作者Ali Esmaeili
相关产品推荐
相关产品推荐

