数据未输入数据库乐透程序

时间:2014-09-30 02:56:26

标签: python sqlite

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 个答案:

答案 0 :(得分: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表示连接正在请求off-by - n错误。 curcursor是常见的替代方案。