如何根据rowid删除数据

Posted

技术标签:

【中文标题】如何根据rowid删除数据【英文标题】:How to delete data based on rowid 【发布时间】:2014-03-08 07:04:17 【问题描述】:

使用 python,我如何根据 lastrowid 删除数据。我的代码删除了所有行 代码:

import re
import sys
import difflib
import sqlite3

def main():   
   while True:      
      name = input ('Please Type your Question:  ').lower().split()  
      name2 = name[:]
      import sqlite3
      for item in name2:#break                
         conn = sqlite3.connect("foods.db")
         cursor = conn.cursor()           
         cursor.execute("INSERT INTO INPUT33 (NAME) VALUES (?);", (name2,))      
         cursor.execute("select MAX(rowid) from [input33];")
         conn.commit()      
         for rowid in cursor:break         
         for elem in rowid:
            m = elem            
            print(m)
            cursor.execute("DELETE FROM INPUT33 (NAME) WHERE NAME = name")

【问题讨论】:

不知道 API,但应该是 cursor.execute("DELETE FROM INPUT33 WHERE rowid=?", m) 使用真正的主键可能比 rowid 更好。 谢谢,@Joachim。我花了很长时间阅读和研究才能打印lastinsertrowid....我最近发现表名必须在[]中,现在我如何在这里获取主键?问候 【参考方案1】:

要获取最后插入的 rowid,请使用光标的 lastrowid 属性。

要删除具有特定 rowid 的记录,请在 WHERE 条件中使用该列:

cursor.execute("INSERT INTO input33(Name) VALUES(?)", ("whatever",))
rowid = cursor.lastrowid
cursor.execute("DELETE FROM input33 WHERE rowid = ?", (rowid,))

【讨论】:

以上是关于如何根据rowid删除数据的主要内容,如果未能解决你的问题,请参考以下文章

查询及删除重复记录

Mysql根据一张表俩个字段删除重复数据

在oracle 数据伪列 rowid中删除重复的数据时。为啥数据插入的早,rowid 就小啊?我看不出来哪里小了

删除oracle 表中重复数据sql语句保留rowid最小的一条记录

Oracle查询及删除重复数据

删除表里重复数据