使用 Python 插入 Clickhouse 时如何处理 INSERT 语句中的撇号?

How to handle apostrophe in an INSERT statement when inserting into Clickhouse using Python?

提问人:chapy 提问时间:8/21/2023 最后编辑:Gino Mempinchapy 更新时间:8/21/2023 访问量:41

问:

我正在插入 Clickhouse,但由于语句中的撇号而发生错误。

tmp_list = ['A\'BCD','12345','1a2a3a4a']

insert = f'INSERT INTO tmp_table (NAME) VALUES (\'{tmp_list[0]}\', \'{tmp_list[1]}\', \'{tmp_list[2]}\')'
client.execute(insert)

输出

ServerException:代码:47。 DB::Exception:处理查询时缺少列:“A'BCD”,必填列:'A'BCD'“A'BCD”:执行 ValuesBlockInputFormat 时。A'BCD

tmp_list = ['A\'BCD','12345','1a2a3a4a']

insert = f'INSERT INTO tmp_table (NAME) VALUES ({repr(tmp_list[0])}, {repr(tmp_list[1])},{repr(tmp_list[2])})'
client.execute(insert)

输出

ServerException:代码:47。 DB::Exception:处理查询时缺少列:“A'BCD”,必填列:'A'BCD'“A'BCD”:执行 ValuesBlockInputFormat 时。A'BCD

python clickhouse 撇号

评论

0赞 roganjosh 8/21/2023
这是可怕的做法,你现在需要停止它。这就是 SQL 注入的发生方式
0赞 roganjosh 8/21/2023
但是,我需要时间来了解如何参数化事物,因为我不熟悉它clickhouse

答: 暂无答案