Python 如何确定行是否已插入?

Python 如何确定行是否已插入?,python,sqlite,Python,Sqlite,在使用sqlite3 for python时,如何确定行是否已成功插入到表中?e、 g conn = sqlite3.connect("test.db") c = conn.cursor() c.execute("INSERT INTO TEST VALUES ('sample text')") c.commit() c.close() 如果在调用execute()或commit()时未引发异常,则在调用commit()时插入异常 成功提交事务是数据库层的一项保证,即插入已写入磁盘。您可以

在使用sqlite3 for python时,如何确定行是否已成功插入到表中?e、 g

conn = sqlite3.connect("test.db")
c = conn.cursor()

c.execute("INSERT INTO TEST VALUES ('sample text')")

c.commit()
c.close()

如果在调用
execute()
commit()
时未引发异常,则在调用
commit()
时插入异常


成功提交事务是数据库层的一项保证,即插入已写入磁盘。

您可以获取所有行,并查看其是否包含以下内容:

SELECT * FROM TEST

但是,如果SQLite不起作用,它会给您一条错误消息。

您可以在插入前和插入后
count()

您可以尝试以下操作以显示错误消息:

    try:
        c.execute("INSERT INTO TEST VALUES ('sample text')")
     except sqlite3.OperationalError, msg:
        print msg

您应该在建立的
连接上执行提交操作(选择的数据库是
conn
),而不是在
光标上执行提交操作

conn = sqlite3.connect("test.db")
c = conn.cursor()

c.execute("INSERT INTO TEST VALUES ('sample text')")
#commit the changes to db   
conn.commit()
conn.close()

首先,您应该对连接对象而不是游标进行提交,即
conn.commit()
not
c.commit()

然后,您可以检查光标上的
lastrowid
,以确定在
conn.commit()之后插入是否成功


c.lastrowid

但是,如果您不提交,插入将再次被丢弃。如果以前有插入呢?select将返回行,不会给您错误,但插入可能仍然失败。select将返回所有行。然后再仔细检查刚才插入的行是否在那里。如果有大量的行,这将很快变得单调乏味。你根本不需要这样做;插入成功或引发异常。提交要么成功,要么引发异常。我知道,这只是因为他不确定自己的插入是否正常工作,他想用眼睛来确认。正如我在回答中所说:
但如果SQLite不起作用,它会给您一条错误消息。
那么,是否会有一些从提交中引发的异常?例如,如果提交失败,那么我可以准确地输入类似“未添加行”的内容。您可以捕获sqlite3.Error