为什么我无法从sqlite3界面看到表格内容?

时间:2014-06-24 05:01:57

标签: python sqlite

我编写了一个简单的基本程序来创建数据库并在表中插入一行。 这是程序的样子。

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)

非常感谢任何帮助

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()