在列表中存储的字符串中插入 200 个变量

Inserting 200 variables in a string stored in list

我有一个变量列表:

listV = ['v1, 'v2', ...,'v200']

我想以更简洁的方式执行以下操作:

q1 = 'insert into myTable ({}, {}, {},....{})'.format(listV)

我想要的输出是:

q1 = 'insert into myTable (v1, v2, v3, ...., v200)'

对于较少数量的变量,我能够编写更清晰的代码,但是对于 200 个变量,我很难创建更清晰的代码。

我需要动态创建 q1,因为 listV 的内容发生变化,但 listV 的长度保持不变。

为了省去一些麻烦,您也可以通过编程方式创建格式字符串。

listV = ["V1", "V2", "V3"]

n = len(listV)

fstring = "insert into myTable (" + "{}, " * (n-1) + "{})"

q1 = fstring.format(*listV) 
# The * unpacks the items in listV into separate arguments
print(q1)
# >>> insert into myTable (V1, V2, V3)
>>> listV = ['v1', 'v2', 'v200']
>>> q1 = 'insert into myTable'
>>> q1 = q1 + ' (' + ', '.join(listV) +  ')'
>>> q1
'insert into myTable (v1, v2, v200 )'
listV = ['v1', 'v2', 'v200']
q1 = "insert into myTable ({})".format(", ".join(listV))

这就是我能想到的方式....

my_list = [1,2,3]
q = "insert into mytable ("
for i in range(0, len(my_list), 1):
    currNum = my_list[i]
    if i != len(my_list) - 1:
        q += str(currNum) + ","
    else:
        q += str(currNum)
q += ")"
print(q)

我是Python新手-_-

listV = [i for i in range(200)]
q1 = str("insert into myTable (" + "{}, "*(len(listV)-1) + "{})").format(*listV)

正如其他人所提到的,string-formatting sql-queries 使您的数据库容易受到 SQL-injections 的攻击。

编辑 Olvyn Roght 的回答非常好!这是一个也适用于整数的替代版本:

listV = [i for i in range(200)]
q1 = "insert into myTable ({})".format(str(listV)[1:-1])