我在python中使用sqlite。当我插入表A时,我需要从表B中提供一个ID。所以我想要做的是将默认数据插入B,获取id(这是自动增量)并在表A中使用它。最好的方法是什么从我刚插入的表中接收密钥?
答案 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曾经发生过 在该数据库连接上,零是 返回。
答案 2 :(得分:1)
只需使用:
SELECT last_insert_rowid();
但是,如果您有多个连接写入数据库,则可能无法获得所需的密钥。