8

python使用sqlite3时,如何判断一行是否成功插入到表中?例如

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

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

c.commit()
c.close()
4

6 回答 6

11

如果调用execute()or时没有抛出异常,commit()则调用时插入commit()

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

于 2012-11-09T18:17:05.460 回答
2

你可以得到所有的行,看看它是否在那里:

SELECT * FROM TEST

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

于 2012-11-09T18:17:25.273 回答
1

您可以count()在插入之前和之后进行行。

于 2012-11-09T18:17:39.173 回答
1

您可以尝试这样的事情来获得错误消息:

    try:
        c.execute("INSERT INTO TEST VALUES ('sample text')")
     except sqlite3.OperationalError, msg:
        print msg
于 2012-11-09T18:45:05.833 回答
0

您应该在connection made(db selected which is conn) not on 上进行提交cursor

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()
于 2020-07-13T09:55:16.733 回答
0

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

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

c.lastrowid

于 2021-05-06T12:48:58.973 回答