Python 如何确定行是否已插入?
在使用sqlite3 for python时,如何确定行是否已成功插入到表中?e、 gPython 如何确定行是否已插入?,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()时插入异常 成功提交事务是数据库层的一项保证,即插入已写入磁盘。您可以
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()
notc.commit()
然后,您可以检查光标上的lastrowid
,以确定在conn.commit()之后插入是否成功
c.lastrowid
但是,如果您不提交,插入将再次被丢弃。如果以前有插入呢?select将返回行,不会给您错误,但插入可能仍然失败。select将返回所有行。然后再仔细检查刚才插入的行是否在那里。如果有大量的行,这将很快变得单调乏味。你根本不需要这样做;插入成功或引发异常。提交要么成功,要么引发异常。我知道,这只是因为他不确定自己的插入是否正常工作,他想用眼睛来确认。正如我在回答中所说:但如果SQLite不起作用,它会给您一条错误消息。
那么,是否会有一些从提交中引发的异常?例如,如果提交失败,那么我可以准确地输入类似“未添加行”的内容。您可以捕获sqlite3.Error
。