繁体   English   中英

带有SQLite3的Python:select不显示任何数据

[英]Python with SQLite3: select does not display any data

我正在使用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不显示数据?

您需要先提交事务,然后事务才永久地成为数据库的一部分:

db.commit()

如果成功执行了代码块,则可以将数据库连接用作上下文管理器来自动提交:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM