2014-09-30 47 views
0
import itertools 
import sqlite3 
import numpy 


conn = sqlite3.connect('lotto.db') 

con = conn.cursor() 

con.execute('''CREATE TABLE IF NOT EXISTS lotto 
     (num1 int,num2 int,num3 int,num4 int,num5 int, num6 int) ''') 

con.execute('INSERT INTO lotto (num1,num2,num3,num4,num5,num6) VALUES (1,2,3,4,5,7)') 

print(con.execute('SELECT * FROM lotto')) 

for combo in itertools.combinations(range(1,10), 6): 
    elements = (",".join(str(c) for c in combo)) 

    results = elements.split(',') 
    results = map(int, results) 

    con.execute('INSERT INTO lotto (num1,num2,num3,num4,num5,num6) VALUES (?,?,?,?,?,?)', results) 

    avg = numpy.mean(results) 

    print(avg) 
    print(results) 

con.close() 

我有這段代碼但它運行並沒有輸入列表到數據庫,沒有任何輸入沒有輸入錯誤只是運行打印罰款和創建表,但只是沒有輸入任何數據。數據沒有被輸入到數據庫樂透程序

我是相當新的python所以任何幫助將不勝感激。

回答

1

Call commit您關閉連接之前:

conn.commit() 
conn.close() 

每文檔:

此方法提交當前事務。如果您不調用此方法,自上次調用commit()以來執行的任何操作都不是 ,而是從其他數據庫連接中可見。如果您想知道爲什麼您不要 看到您寫入數據庫的數據,請檢查您沒有撥打 忘記調用此方法。


或者,你可以使用connection as a context manager

連接對象可以作爲上下文管理自動 提交或回滾事務。如果發生異常,則回滾事務 ;否則,事務被提交

with sqlite3.connect('lotto.db') as conn: 
    cursor = conn.cursor() 
    ... 

提示:不要將其命名光標con

con = conn.cursor() 

變量名應爲不同的越好。有con代表光標,conn代表連​​接請求關閉n錯誤。 curcursor是常見的選擇。

相關問題