创建空白字段并使用sqlite,python接收INTEGER PRIMARY KEY

时间:2009-02-04 05:06:35

标签: python sqlite

我在python中使用sqlite。当我插入表A时,我需要从表B中提供一个ID。所以我想要做的是将默认数据插入B,获取id(这是自动增量)并在表A中使用它。最好的方法是什么从我刚插入的表中接收密钥?

3 个答案:

答案 0 :(得分:7)

正如Christian所说,sqlite3_last_insert_rowid()就是你想要的......但那是C级API,而你正在使用SQLite的Python DB-API绑定。

看起来光标方法lastrowid将执行您想要的操作(search for 'lastrowid' in the documentation for more information)。使用cursor.execute( ... )插入您的行,然后执行lastid = cursor.lastrowid之类的操作以检查插入的最后一个ID。

你说你需要“一个”ID让我担心,但是...... 你拥有哪个 ID无关紧要?除非您使用刚刚插入B中的数据,否则您需要那个行ID,如果您只需要表B的任何旧行ID,那么您的数据库结构会严重搞乱。

答案 1 :(得分:1)

查看sqlite3_last_insert_rowid() - 这可能就是您要找的内容:

  

SQLite表中的每个条目都有一个   唯一的64位有符号整数键   叫做“rowid”。 rowid是   总是作为未申报的   列名为ROWID,OID或_ROWID_ as   只要这些名字不被使用   通过显式声明的列。如果   table有一个INTEGER类型的列   然后那个专栏是那个专栏   rowid的另一个别名。

     

此例程返回的rowid   最近成功插入INSERT   数据库连接的数据库   在第一个论点中。如果不   成功的INSERT曾经发生过   在该数据库连接上,零是   返回。

希望它有所帮助! (有关ROWID的更多信息可用herehere。)

答案 2 :(得分:1)

只需使用:

SELECT last_insert_rowid();

但是,如果您有多个连接写入数据库,则可能无法获得所需的密钥。