我想知道是否可以使用参数插入列名到使用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
数据库中的行的总数。
在第二个查询的问题是,这些参数将被解释为被查询的字符串。是否有插入它们,这样它们可以被解释为一个非字符串的方法吗?我想这样做的方式,从注入攻击安全。
不建议使用第二个语法,第一个是确定的和安全的。