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
是否可以通过参数动态定义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