2015-07-02 81 views
0

我試圖檢索存儲在hs_audit.sqlite的表T3中的最新版本的審計問題。我已經嘗試了多個版本的cur.exectute行,但一直得到一個結果=無。我是新來的sqlite,所以任何人都可以用正確的語法來幫助我。 如果我執行cur.execute線如下無法從mySqlite3檢索str

cur.execute("SELECT hvq1 FROM T3 WHERE audit_ver = 1") 

,並刪除

con.text_factory = str 

它的作品,所以我認爲這個問題必須在sqlite的命令中使用變量。

max_audit_ver = 1 
audit_questions = ["hvq1", "hvq2", "hvq3", "hvq4", "hvq5"] 

     count = 0 
     for quest in audit_questions: 
      con = sqlite3.connect("hs_audit.sqlite") 
      con.text_factory = str 
      cur = con.cursor() 
      cur.execute("SELECT '%s' FROM T3 WHERE audit_ver = '%s'" % (quest, max_audit_version)) 
      result = cur.fetchone() 
      con.close() 
      print "Question =%s" % (quest) 
      print "Audit Version =%s" % (max_audit_version) 
      print "The Count Is =%s" % (count) 
      print "The return from the DB is =%s" % (result) 
      count += 1 

回答

0

心靈的synthax ... max_audit_versionmax_audit_ver

在另一方面,你應該閱讀this page,你會發現一些重要的注意事項,如:

# Never do this -- insecure! 
symbol = 'RHAT' 
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol) 

# Do this instead 
t = ('RHAT',) 
c.execute('SELECT * FROM stocks WHERE symbol=?', t) 
print c.fetchone() 

# Larger example that inserts many records at a time 
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), 
      ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00), 
      ('2006-04-06', 'SELL', 'IBM', 500, 53.00), 
      ] 
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)