2016-12-01 20 views
1

我試圖完成一個非常簡單的任務:Python的sqlite3的:要反覆讀取行,但代碼是拉動每隔一行

  • SQLite中創建表
  • 插入幾行
  • 在表中查詢的單列和拉回來的每一行

代碼來創建標籤:

import sqlite3 
sqlite_file = '/Users/User/Desktop/DB.sqlite' 
conn = sqlite3.connect(sqlite_file) 
c = conn.cursor() 

c.execute('''CREATE TABLE ListIDTable(ID numeric, Day numeric, Month 
numeric, MonthTxt text, Year numeric, ListID text, Quantity text)''') 


values_to_insert = [ 
(1,16,7,"Jul",2015,"XXXXXXX1","Q2"), 
(2,16,7,"Jul",2015,"XXXXXXX2","Q2"), 
(3,14,7,"Jul",2015,"XXXXXXX3","Q1"), 
(4,14,7,"Jul",2015,"XXXXXXX4","Q1")]  #Entries continue similarly 

c.executemany("INSERT INTO ListIdTable (ID, Day, Month, MonthTxt, 
Year, ListID, Quantity) values (?,?,?,?,?,?,?)", values_to_insert) 

conn.commit() 
conn.close() 

當我在SQLite數據庫瀏覽器中查看此表時,一切都很正常。

這裏是我的代碼,試圖查詢上表:

import sqlite3 
sqlite_file = '/Users/User/Desktop/DB.sqlite' 
conn = sqlite3.connect(sqlite_file) 
conn.row_factory = sqlite3.Row 
c = conn.cursor() 

for row in c.execute('select * from ListIDTable'): 
    r = c.fetchone() 
    ID = r['ID'] 
    print (ID) 

我應該得到一個打印出來的1,2,3,4 不過,我只得到2和4

我的代碼實際上傳了100個條目到表中,但是,當我查詢時,我只能得到偶數的ID打印輸出(即2,4,6,8等)。

感謝您對此問題的任何建議。

回答

2

你不需要fetchone在循環 - 循環已經獲取的值(一次一個)。如果你在迭代的時候你只看到一半的數據,因爲循環提取了一個數據,然後你立即獲取下一個數據(沒有看過循環提取的數據):

for r in c.execute('select * from ListIDTable'): 
    ID = r['ID'] 
    print (ID) 
相關問題