我想知道是否可以使用 Python 将列名参数插入到 MySQL 查询中。
考虑以下两个查询,这两个查询都传递给 MySQLCursor.execute()
。第一个:
query = (
'SELECT username, COUNT(*)'
'FROM `entry`'
'GROUP BY username;'
)
cursor.execute(query)
第二个:
query = (
'SELECT %s, COUNT(*)'
'FROM `entry`'
'GROUP BY %s;'
)
data = ('username', 'username')
cursor.execute(query, data)
其中第一个返回我期望的结果(对用户名列中出现不同值的次数进行计数),第二个返回意外结果,特别是 [(u'username', n)]
其中 n
是数据库中的总行数。
第二个查询中的问题是参数被查询解释为字符串。有没有办法插入它们以便它们可以被解释为非字符串?我想以一种免受注入(inject)攻击的方式来做到这一点。
最佳答案
不建议使用第二种语法,第一种语法就可以而且安全。
关于python - 我可以使用参数插入来指定 MySQL 查询的列名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54546877/