一般的方法是在表里加一个guid列,这列的值在前台就产生,前台 insert 插入后,可以按这个guid重新select到记录。
python 里对 oracle 和 sqlite 的操作可以内置了类似的方法,可以直接取到ID.
sqlite 是pythin内建支持的数据库,oralce 需要用 cx_oralce 模块。两者取ID的方式稍有不同,但逻辑一致。
下面是两段同功能代码,分别是对 sqlite 和 oracle 操作。
- def AddFangan(self, label):
- c = self.conn.cursor()
- c2 = c.execute("insert into JYFA (fieldlabel,FIELDTYPE,pid) values(?,?,?)", (label, 0, 0))
- dataid = c2.lastrowid
- self.conn.commit()
- return dataid
- def AddFangan(self, label):
- c = self.conn.cursor()
- c.execute("insert into %s (fieldlabel,FIELDTYPE,pid,dsporder) values(:1,:2,:3,:4)" % self.tb1name,
- (label, 0, 0, 0))
- lastrowid = c.lastrowid
- cursor = c.execute("select id from %s where rowid=:1 " % self.tb1name, (lastrowid,))
- row = cursor.fetchone()
- dataid = row[0]
- self.conn.commit()
- return dataid