我可以使用参数插入为MySQL查询指定列名吗?

时间:2019-02-06 05:00:51

标签: python mysql mysql-python

我想知道是否可以对使用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是数据库中的总行数。

第二个查询中的问题是查询将参数解释为字符串。有没有一种方法可以插入它们,使它们可以解释为非字符串?我想以一种安全的方式来进行注入攻击。

1 个答案:

答案 0 :(得分:0)

不建议使用第二种语法,第一种可以安全使用。