如何根据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删除数据的主要内容,如果未能解决你的问题,请参考以下文章
在oracle 数据伪列 rowid中删除重复的数据时。为啥数据插入的早,rowid 就小啊?我看不出来哪里小了