【问题标题】:Python with SQLite3: select does not display any data带有 SQLite3 的 Python:选择不显示任何数据
【发布时间】:2014-07-22 19:11:28
【问题描述】:

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

我如何创建表和数据:

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不显示数据?

【问题讨论】:

    标签: python database python-2.7 sqlite


    【解决方案1】:

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

    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,这就是为什么您在数据库中看到了表,但没有看到新行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-10
      • 2013-02-11
      • 2013-10-06
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      相关资源
      最近更新 更多