用于MySQL查询执行的python StringBuilder

时间:2013-07-22 02:17:45

标签: python mysql query-string stringbuilder

我正在尝试查询我的数据库,其中一列是python变量:

weekNum = "week" + str(i)               #i is either 2, 3, 4, 5
cur.execute("select %s from golden_table where nGram = %s and hash_tag = %s", (weekNum, tup[0], tup[1]))

请注意,SQL表:golden_table包含4列:week2 week3 week4 week5。 但是,python或MySQL并未将weekNum的值视为列。而是从查询返回的是值“weeki”。我在哪里。在Java中,我知道这是StringBuilder类的方法。

  1. 在python中解决这个问题的等效方法是什么?
  2. 在python中解决这个问题的更好方法是什么?
  3. 感谢所有帮助,如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:2)

如果你的python版本是最近的(2.6+)。你可以使用格式。

weekNum = "week" + str(i)               #i is either 2, 3, 4, 5
query = "select {0} from golden_table where nGram = %s and hash_tag = %s".format(weekNum)
cur.execute(query, (tup[0], tup[1]))

答案 1 :(得分:0)

execute中的参数替换是值,而不是字段名。你需要使用普通的字符串插值。所以:

sql = "select %s from golden_table where nGram = %%s and hash_tag = %%s" % weekNum
cur.execute(sql, tup)

注意第一个语句中的双重百分比,以便它们通过未受损害的字符串插值。