删除整数列表周围的括号

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


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 会起作用


偶然的你
浏览 170回答 2
2回答

侃侃尔雅

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

吃鸡游戏

使用 map 将列表中的每个元素转换为字符串,然后按照您在问题中的提示使用 join :data2 = "SELECT * FROM TABLE_A WHERE TABLE_ID IN ({})".format(','.join(map(str, data)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python