首页 > 解决方案 > 删除整数列表周围的括号

问题描述

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

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])'

有没有办法摆脱数字周围的括号?我假设在返回 final_table_set 之前,我需要在最后某处的 choose_tables() 函数中执行此操作?这些是整数,而不是 SQL 语句中使用的字符串,所以我认为 ','.join 不会起作用

标签: pythonlist

解决方案


从变量构造 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)'

推荐阅读