gpt4 book ai didi

python - 是否可以通过 sqlalchemy 对数据库进行类似生成器的查询?

转载 作者:太空狗 更新时间:2023-10-30 01:30:05 30 4
gpt4 key购买 nike

目前我以这种方式查询我的数据库:

for author in session.query(Author).filter(Author.queried==0).slice(0, 1000):
print "Processing:", author
# do stuff and commit later on

这意味着我必须每 1000 位作者重新启动脚本。

是否可以让脚本无限运行(或者只要有作者)?我的意思是,如果可以的话

session.query(Author).filter(Author.queried==0).slice(0, 1000)

生成queried==0为真的下一位作者。

最佳答案

查询对象可以按原样视为迭代器。一旦您开始使用查询迭代器中的数据,SQL 就会执行。示例:

for author in session.query(Author).filter(Author.queried==0):
print "Processing: ", author

你的问题使用了“无休止”这个词,所以要小心。 SQL 不是事件处理 API;您不能简单地执行一个“永远”运行的查询,并在将每个新行添加到表中时将其吐出。我希望那是可能的,但事实并非如此。

如果您的目的是检测新行,则必须使用相同的查询定期进行轮询,并在您的数据模型中设计一个指示器,以便告诉您哪些行是新行。您现在似乎用 queried 列来表示它。在这种情况下,在上面的 for 循环中,您可以设置 author.queried = 1session.add(author)。但是您不能在循环内 session.commit()

关于python - 是否可以通过 sqlalchemy 对数据库进行类似生成器的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809204/

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