Python中如何去除列表外层括号,将抽样数据正确拼入SQL插入查询
实现方法
直接把saraksts嵌入f-string会自动生成带外层[]的字符串,不符合SQL多行INSERT的语法要求,可通过以下两种方案实现无外层方括号的嵌入:
方案1:手动拼接元组(优先使用,兼容性更强)
saraksts里的每个元素都是元组,转成字符串后本身就符合SQL值的格式,只需要把所有元组字符串用逗号拼接,即可完全去掉外层列表括号:
import random dati = [("Lauris","24","lauris23@inbox.lv"), ("Ģirts","48","jutka@gmail.com"), ("Ivo","18","ikasd@yahoo.com"), ("Mikus","58","321es1@aol.net"), ("Tomass","34","jeg@outlook.net"), ("Zigis","34","zigis12@epasts.lv"), ("Lolita","14","lolita123@zoho.com"), ("Paula","87","paulalaura@mail.net"), ("Krists","37","37kristaps@inbox.lv"), ("Jurijs","62","jurij@rumail.ru"), ("Sandis","71","krap12@gmail.com"), ("Marta","29","marta29@inbox.lv") ] # 如需生成8张表的插入语句,将range的右参数改为8即可,原range(0,9)会生成9次循环 for i in range(0, 8): saraksts = random.sample(dati, 10) # 遍历每个元组转字符串后用逗号拼接 values_str = ",".join(str(row) for row in saraksts) query = f"INSERT INTO Cilveki{i} VALUES {values_str};" print(query)
生成的query效果示例:
INSERT INTO Cilveki0 VALUES ('Lauris','24','lauris23@inbox.lv'),('Ģirts','48','jutka@gmail.com'),('Ivo','18','ikasd@yahoo.com');
方案2:字符串切片快速去除括号(适合简单场景)
如果当前列表元素没有嵌套方括号结构,也可以直接把列表转成字符串后,截掉首尾的[和]字符:
for i in range(0, 8): saraksts = random.sample(dati, 10) # str(saraksts)格式为"[(...),(...)]",切片[1:-1]直接去掉首尾的[] query = f"INSERT INTO Cilveki{i} VALUES {str(saraksts)[1:-1]};" print(query)
注意:这种方法仅适合当前纯元组元素的场景,如果后续元素中包含带方括号的取值,会出现字符串截断错误。
内容的提问来源于stack exchange,提问作者Ivo Sorokins
相关产品推荐
相关产品推荐

