删除整数列表周围的括号

时间:2019-02-07 20:46:52

标签: python list

我有一个返回以下内容的函数:

def choose_tables(self):
...
...
return final_table_set

哪个返回一个整数列表,如下所示:

[11,12,13,14,15]

我遇到的问题是我试图在执行SQL并将其返回到DataFrame的另一个函数中使用该返回值:

def execute_sql(self):
    s = self.connection()
    data = self.choose_tables()
    data2 = "SELECT * FROM TABLE_A WHERE TABLE_ID IN ({})".format(data)
    df = pd.read_sql(data2, s) 

它出错了,因为它是这样读取的:

'SELECT * FROM TABLE_A WHERE TABLE_ID IN ([11, 12, 14, 15])'

有没有一种方法可以消除数字中的那些括号?我假设我需要在最后一个地方的choose_tables()函数中执行此操作,然后再返回final_table_set?这些是整数,而不是SQL语句中使用的字符串,因此我认为','。join不会起作用

2 个答案:

答案 0 :(得分:4)

security concerns与从变量构造SQL字符串有关,但除此之外-获得所需结果的最简单方法是:

data = [11,12,13,14,15]
sql = "SELECT * FROM TABLE_A WHERE TABLE_ID IN ({})".format(",".join(str(d) for d in data))

>>> 'SELECT * FROM TABLE_A WHERE TABLE_ID IN (11,12,13,14,15)'

答案 1 :(得分:1)

使用地图将列表中的每个元素转换为字符串,然后根据您的问题提示使用连接:

data2 = "SELECT * FROM TABLE_A WHERE TABLE_ID IN ({})".format(','.join(map(str, data)))