使用分散变量的MySQL查询的正确形式是什么?

时间:2016-04-30 11:30:08

标签: python mysql

我已经检查了与此相关的问题,但我似乎找不到任何可以帮助我解决问题的方法。

    # this is the code that comes before the mysql query 
    select = request.args['select']
    print select # ["c9", "TEMP"]
    c, conn = connection()
    print "connected"

实施此查询后,它不会产生任何数据

data = c.execute("SELECT Client, %s, Date_Time FROM data WHERE Client = %s and Date_Time > '2016-04-26 18:17:15'", (select[1],select[0]))
# prints data = 0

这个用我的SQL查询产生错误

data = c.execute("SELECT Client, '%s', Date_Time FROM data WHERE Client = '%s' and Date_Time > '2016-04-26 18:17:15';", (select[1],select[0]))
# (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'\\"\'\', Date_Time FROM data WHERE Client = (\'[\') and Date_Time > \'2016-04-26 18:17\' at line 1')

此处也没有数据生成

data = c.execute("SELECT Client, '%s', Date_Time FROM data WHERE Client = %s and Date_Time > '2016-04-26 18:17:15';", (select[1],select[0]))
# prints data = 0

但是,只需输入此命令即可(无变量)

data = c.execute("SELECT Client, TEMP, Date_Time FROM data WHERE Client = 'c9' and Date_Time > '2016-04-26 18:17:15';")

那么我的错误在哪里? :/

1 个答案:

答案 0 :(得分:2)

您不能在列列表中使用参数替换;你需要在那里使用普通的Python字符串格式。

 title .................................
 start date ...........   expiry date...............
 title .................................
 start date ...........   expiry date...............
 title .................................
 start date ...........   expiry date...............
 title .................................
 start date ...........   expiry date...............
 ====================================================
 title .................................
 start date ...........   expiry date...............
 ====================================================
 title .................................
 start date ...........   expiry date...............
 title .................................
 start date ...........   expiry date...............