Python Mysql 和动态定义字段

Python Mysql and dynamically defining fields

是否可以通过参数动态定义ORDER BY字段?通过不懈的搜索,我想出了你做不到的。

所以我想我会问你是否可以?或者是否有解决方法?

示例:

sql = "SELECT `xyz` FROM `checkins` WHERE `name`=%s AND `timestamp` >=%s AND `timestamp` < %s ORDER BY `xyz` DESC LIMIT 1"

query.execute(sql, (name, start, end))

有效

sql = "SELECT `xyz` FROM `checkins` WHERE `name`=%s AND `timestamp` >=%s AND `timestamp` < %s ORDER BY `%s` DESC LIMIT 1"

query.execute(sql, (name, start, end, field))

无效

目的是使 ORDER BY 字段动态定义(使用字段变量),但是当我尝试动态定义时,它会不断返回未知字段或忽略该字段,因为它正在将其更改为 'defined_field' 带引号

我也尝试从 ORDER BY 中删除 `

我对 %s 有这样的偏见。你可以试试:

name = 'kbball'
start = '2017'
end = '2018'
field = 'field'

sql = "SELECT `xyz` FROM `checkins` WHERE `name`= " + name + " AND `timestamp` >= " + start + " AND `timestamp` < " + end + " ORDER BY `"+ field + "` DESC LIMIT 1"

print(sql)

#output SELECT `xyz` FROM `checkins` WHERE `name`= kbball AND `timestamp` >= 2017 AND `timestamp` < 2018 ORDER BY `field` DESC LIMIT 1