无法使用Python向sqlite3数据库插入数据
我写了一个程序,用来把火车的编号和名称插入到一个数据库里。编号和名称都是正确的(注释掉的打印语句可以证明这一点),但是当我用数据库查看器打开这个数据库文件时,它是空的。
代码:
import sqlite3
import re
conn=sqlite3.connect('example.db')
c=conn.cursor()
c.execute('''CREATE TABLE train
(number text, name text)''')
f=open("train.htm","r")
html=f.read()
num=re.findall(r"(?<=> )[0-9]+", html) #regex to get train number
name=re.findall(r"(?<=<font>)[A-Za-z]+[ A-Za-z]+",html) #regex to get train name
j=8
for i in range(0,len(num)):
#print(num[i],name[j]) #this statement proves that the values are right
c.execute("INSERT INTO train VALUES (?,?)",(num[i],name[j]))
j=j+3
conn.close()
但是当我尝试读取这个数据库时,它还是空的。
读取数据库的代码:
import sqlite3
conn=sqlite3.connect('example.db')
c=conn.cursor()
for row in c.execute('SELECT * FROM train'):
#the program doesn't even enter this block
print(row)
我还试着用sqlitebrowser打开这个数据库,只是想确认一下,结果还是空的。所以我觉得我的第一个程序有问题,无法插入数据。为什么会这样呢?
1 个回答
7
你必须在
conn.commit()
之前调用
conn.close()
,这样插入的数据才能被保存。这是一个关于Python和sqlite的小陷阱。