sqlite游标只执行for循环中的一行

2024-06-28 20:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在我运行这段代码时,我肯定可以输出任何可用行的列,但是当我尝试在for循环中插入新结果时,它只插入第一行,然后停止。你知道吗

这里的目标是按两个不同的参数对行进行排序,我确实有一些新闻文章,我想先按sqltime排序,然后按score排序。你知道吗

我试过做SELECT Title, Description, URL, IMGLink, Score FROM today ORDER BY Score DESC, sqltime ASC,但只执行第一个参数,而忽略另一个参数。你知道吗

我认为创建一个单独的表可以解决这个问题;下面是代码:

for row in cursor.execute("SELECT Title, Description, URL, IMGLink, Score FROM main"):
    nline = (row[0], row[1], row[2], row[3], row[4])
    cursor.execute('INSERT INTO today (Title, Description, URL, IMGLink, Score) VALUES (?, ?, ?, ?, ?)', (nline))
    conn.commit()

我只需访问today表并按分数排序

This is my db


Tags: 代码fromurlfor参数today排序title
2条回答

提交insert可能会导致select游标重置,如下错误报告所述:https://bugs.python.org/issue23129 尝试在循环内建立一个结果列表,然后在循环外插入它们。这也有助于提高性能

您可以通过使用INSERT INTO table SELECT来使用单个执行来简化问题

例如,SQL可以是:-

INSERT INTO today (Title,Description,URL,IMGLink,Score) SELECT Title, Description, URL, IMGLink, Score FROM main ORDER BY Score DESC;

虽然您可能希望获得结果(受影响的行数,即插入),但您不需要游标。你知道吗

您不妨看看:

SQL As Understood By SQLite - INSERT - 2. INSERT INTO table SELECT ...;

相关问题 更多 >