我想知道是否可以对使用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
是数据库中的总行数。
第二个查询中的问题是查询将参数解释为字符串。有没有一种方法可以插入它们,使它们可以解释为非字符串?我想以一种安全的方式来进行注入攻击。
答案 0 :(得分:0)
不建议使用第二种语法,第一种可以安全使用。