转换 python 字符串数组以获取 SQL 列名

Convert python string array for SQL column names

提问人:user1411335 提问时间:12/15/2018 更新时间:12/15/2018 访问量:982

问:

如何转换python数组like以形成SQL语句columns = ['column1', 'column2', 'column3']

"Select column1, column2, column3 from table"?

我可以在数组上使用连接,但不知道如何摆脱字符串的引号。

Python SQL 数组字符串 引号

评论

1赞 timgeb 12/15/2018
引号不是字符串的一部分。它们是显示辅助工具。
0赞 roganjosh 12/15/2018
报价不是问题。不能参数化列名。你需要他们进来。如果这是正面的,则需要根据有效名称列表检查用户输入,以防止 SQL 注入format
0赞 user1411335 12/15/2018
谢谢你@timgeb加入工作就好了。没有意识到他们只是展示辅助工具

答:

2赞 James K. Lowden 12/15/2018 #1
>>> 'select ' + ', '.join([c for c in columns]) + ' from table'
'select column1, column2, column3 from table'

这是你的想法吗?

评论

0赞 user1411335 12/15/2018
是的,不知何故,我相信加入是不够的,但这有效
1赞 timgeb 12/15/2018
@user1411335记住,在像这样将 SQL 语句组合在一起时,字符串可能包含 SQL 注入。最好使用健壮的库。你可以从这里开始。
0赞 James K. Lowden 12/15/2018
@timgeb,没有图书馆可以使上述内容安全、“健壮”或否定。参数化查询仅参数化数据,而不参数化表名或列名。大多数 SQL 客户端库都受到类似的限制。我建议你的警告是错误的,因为不涉及数据,没有建议名称来自用户,并且应用程序在其中硬编码 DBMS 名称是常见的编程实践。
0赞 timgeb 12/15/2018
@JamesK.Lowden,你显然比我更了解这些东西,所以我建议人们在这件事上听听你的意见。