Python将数组列表格式化为字符串

2024-09-30 20:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一个数组列表并将它附加到一个字符串上。在

Python 2.7.10,Windows 10

从mySQL表加载列表,输出如下:

skuArray = [('000381001238',) ('000381001238',) ('000381001238',) ('FA200513652',) ('000614400967',)]

我想把这个列表附加到一个单独的查询中

问题:

^{pr2}$

我得到了一个错误:

TypeError: cannot concatenate 'str' and 'tuple' objects

我想我需要将字符串格式化为:

'000381001238', '000381001238', '000381001238', 'FA200513652','000614400967'

最终字符串需要读取:

query = query+"WHERE ItemLookupCode IN ('000381001238', '000381001238', '000381001238', 'FA200513652','000614400967') "

我试过以下方法:

skuArray = ''.join(skuArray.split('(', 1))
skuArray = ''.join(skuArray.split(')', 1))

第二次尝试:

skus = [sku[0] for sku in skuArray]
stubs = ','.join(["'?'"]*len(skuArray))


msconn = pymssql.connect(host=r'*', user=r'*', password=r'*', database=r'*')
cur = msconn.cursor()
query ='''
SELECT ItemLookupCode,Description, Quantity, Price, LastReceived
FROM Item 
WHERE ItemLookupCode IN { sku_params }
ORDER BY LastReceived ASC;'''.format(sku_params = stubs)
cur.execute(query, params=skus)
row = cur.fetchone()
print row[3]
cur.close()
msconn.close()

提前感谢您的帮助!在


Tags: 字符串in列表paramswherequerysplitjoin
2条回答

如果您想直接使用内联SQL,可以使用列表理解:

', '.join(["'{}'}.format(sku[0]) for sku in skuArray])

注意:您需要在元组之间添加逗号(基于示例)

也就是说,如果你想做一些sql,我建议你用?在

下面是一个例子,说明你应该如何做这样的事情:

^{pr2}$

为什么?在

非参数化查询不是一个好主意,因为它使您容易受到sql注入的攻击,而且很容易避免。在

假设skuArray是一个列表,如下所示:

>>> skuArray = [('000381001238',), ('000381001238',), ('000381001238',), ('FA200513652',), ('000614400967',)]

您可以这样格式化字符串:

^{pr2}$

相关问题 更多 >