2016-05-30 150 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