我想知道是否可以使用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)
第一个返回我期望的结果(一个不同值出现在username列中的次数的计数),第二个返回意外的结果,特别是
[(u'username', n)]
哪里
n
是数据库中的总行数。
第二个查询的问题是,查询将参数解释为字符串。有没有办法插入它们,使它们可以被解释为非字符串?我想这样做的方式是安全的注射攻击。