2013-07-22 89 views
0

蟒蛇的StringBuilder我想查詢我的數據庫,其中一列是一個Python變量:爲MySQL查詢執行

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中解決這個問題的更好方法是什麼?

所有幫助表示讚賞,並讓我知道你是否需要更多信息。

回答

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])) 
0

execute中的參數替換適用於值而非字段名。你需要使用普通的字符串插值。因此:

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

請注意第一個語句中的雙重百分比,以便它們可以毫不費力地通過字符串插值。