SQLite 游标在 for 循环中只执行一行



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

这里的目标是按两个不同的参数对行进行排序,我确实有那些我想要按 sqltime 然后按分数排序的新闻文章。

我尝试做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表并按分数排序

这是我的数据库

您可以通过使用插入到表选择的单个执行来简化事情.....;

例如,SQL可以是:-

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

您不需要游标,尽管您可能希望获得结果(受影响的行数,即插入(。

您可能希望看看:-

SQLite所理解的SQL - 插入 - 2.插入到表中选择...;

提交插入可能会导致选择光标重置,如以下错误报告中所述:https://bugs.python.org/issue23129 尝试在循环内构建结果列表,然后将其插入循环外部。这也将有助于提高性能

相关内容

  • 没有找到相关文章

最新更新