2016-05-30 184 views
0

我有一個數據庫有兩列。一個是主鍵自動增量,另一個是URL的列。第一個被命名爲'id',第二個被命名爲'longurls'。我跑了下面的代碼來檢索longurls ='X'值的'id'記錄。Sqlite3沒有從數據庫中讀取

import sqlite3 
long_url = 'http://www.google.com' 
conn = sqlite3.connect('database.db') 
c = conn.cursor() 
c.execute("SELECT id FROM stuff WHERE longurls=?",(long_url,)) 
k = c.fetchall() 
for stuff in k: 
    id = stuff[0] 
print (id) 

This is a picture showing the url exists in database。只有「無」印

+0

另外'打印(「身份證」)'將不打印變量'id',它實際上將打印字符串'「id」':)這可能是一個縮進問題,因爲'print'不在for循環中。 – Torxed

+0

對不起,輸入Q. – John

回答

0

我還沒有使用的SQLite在Python,但你的代碼看起來很奇怪,我該位爲

for stuff in k: 
    id = stuff[0] 
print (id) 

如果外循環定義ID會發生什麼?

id = 0 
for stuff in k: 
    id = stuff[0] 
print (id) 

如果你能回到ID列表,那麼這將需要進一步修改

+0

時出現錯誤,錯誤仍然保持不變。當它循環遍歷for循環時,它會更新id的值。所以我們可以在循環之外使用它 – John

+0

對不起,仍然在喝我的第一杯咖啡。在閱讀你的評論之後,我編輯了我的代碼來停止它,只是打印字符串id,並讓id在代碼段內的循環之外。 – Elija

0
import sqlite3 as lite 
import sys 

long_url = 'http://www.google.com' 

con = lite.connect('database.db') 

with con:  

    cur = con.cursor()  
    cur.execute("SELECT * FROM stuff WHERE longurls=?",(long_url,)) 
    rows = cur.fetchall() 
    for row in rows: 
     print row