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很新,所以任何帮助都会非常感激。
答案 0 :(得分:1)
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
错误。 cur
或cursor
是常见的替代方案。