Python with SQLite3:select不显示任何数据

时间:2014-07-22 10:48:23

标签: python database python-2.7 sqlite

我正在使用python和sqlite3编写一个非常简单的数据库。当我创建一个表和一些数据时,我想使用(在终端中)命令显示这些数据"选择*从数据",但没有数据出现,尽管我使用其他方法检查数据是否插入到桌子。

我如何创建表格和数据:

db = connect('database.db')
db_cursor = db.cursor()
db_cursor.execute("CREATE TABLE IF NOT EXISTS Data(Id INT, Name TEXT, City TEXT)")
db_cursor.execute("INSERT INTO Data VALUES (1, 'ABC', 'XYZ')")

如果我这样做:

db_cursor.execute("Select * From Data")
print self.db_cursor.fetchall()

显示数据。

但是当我运行命令行并尝试这样做时:

sqlite3 database.db
sqlite> .mode column
sqlite> .headers on
sqlite> SELECT * FROM Data;

没有数据出现。我检查了

sqlite> .tables

正确生成该表。 为什么从命令行运行sqlite3不显示数据?

1 个答案:

答案 0 :(得分:2)

您需要在事务永久成为数据库之前提交事务:

db.commit()

如果代码块成功执行,您可以使用数据库连接as a context manager自动提交:

with db:
    db_cursor = db.cursor()
    db_cursor.execute("INSERT INTO Data VALUES (1, 'ABC', 'XYZ')")

请注意,DDL语句(创建表和其他数据定义)是automatically committed,这就是您在数据库中看到表而不是新行的原因。