gpt4 book ai didi

python - 删除除我在 python 列表中的 id 之外的所有记录

转载 作者:可可西里 更新时间:2023-11-01 08:38:11 25 4
gpt4 key购买 nike

我想删除 mysql 数据库中的所有记录,但列表中的记录 ID 除外。该列表的长度可能会有所不同,并且很容易包含 2000 多个 ID,...

目前我将我的列表转换为字符串,因此它适合这样的内容:cursor.execute("""从 id 不在 (%s) 中的表中删除""",(list))这感觉不对,我不知道允许列表有多长,....

从 python 执行此操作的最有效方法是什么?

用一个额外的字段来改变表的结构来标记/取消标记要删除的记录会很好,但不是一个选项。有一个专门的表来存储 id 确实很有帮助,然后这可以通过 sql 查询来完成......但我真的很想尽可能避免这些选项。

谢谢,

最佳答案

如果db表不是太大,读入所有ids即可,列出要删除的列表:

keep_ids=[...]
cursor.execute('SELECT id FROM table')
delete_ids=[]
for (row_id,) in cursor:
if row_id not in keep_ids:
delete_ids.append(row_id)
cursor.executemany('DELETE FROM table WHERE id = %s',delete_ids)

如果数据库表很大,则重新创建表:

keep_ids=[...]
cursor.execute('CREATE TABLE IF NOT EXISTS temp_table LIKE table')
cursor.executemany('INSERT INTO temp_table (SELECT * FROM table WHERE id = %s)',keep_ids)
cursor.execute('DROP TABLE table')
cursor.execute('ALTER TABLE temp_table RENAME table')

关于python - 删除除我在 python 列表中的 id 之外的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2826387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com