Py学习  »  DATABASE

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

Stringers • 4 年前 • 253 次点击  

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

第二个查询的问题是,查询将参数解释为字符串。有没有办法插入它们,使它们可以被解释为非字符串?我想这样做的方式是安全的注射攻击。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50811
 
253 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Free Code
Reply   •   1 楼
Free Code    5 年前

不建议使用第二种语法,第一种语法是安全的。