我编写了一个简单的基本程序来创建数据库并在表中插入一行。 这是程序的样子。
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL);''')
print "Table created successfully";
curs = conn.cursor()
curs.execute("INSERT INTO COMPANY (ID,NAME,AGE) \
VALUES (1, 'Paul', 32)");
cursor = conn.execute("SELECT id, name, age from COMPANY")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "AGE = ", row[2], "\n"
conn.close()
上述程序成功创建了一个数据库(test.db)和一个表(COMPANY)。 它甚至可以显示数据。
Problem :
元组已正确插入表中,但当我尝试从sqlit3界面打开表格内容时,我得到空白输出。
root@root> sqlite3 test.db
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
COMPANY
sqlite> select * from COMPANY;
sqlite>
为什么我运行" SELECT"通过脚本查询,但我没有得到sqlite3接口的输出? 我错过了什么吗?
P.S - 脚本是用python编写的。 数据库是SQLite(版本3.8.2)
非常感谢任何帮助
答案 0 :(得分:3)
你似乎忘记了承诺。
# Save (commit) the changes
conn.commit()
你也可以在context manager
中使用连接,一旦块退出就提交结果:
with conn:
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE) VALUES (1, 'Paul', 32)");
或者您可以通过将isolation_level
设置为autocommit
来启用None
:
conn.isolation_level = None
答案 1 :(得分:1)
您尚未提交更改。
在conn.commit()
之前致电conn.close()
。