You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:22:34