gpt4 book ai didi

Python mysqldb fetchmany 无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:28 25 4
gpt4 key购买 nike

我有这样的代码

if __name__ == '__main__':
def result_generator(cursor, batch_size=10):
while True:
results = cursor.fetchmany(batch_size)
if not results:
break
for res in results:
yield res

db = MySQLdb.connect(host="localhost", user="root", passwd="root", db="domains")
# you must create a Cursor object. It will let
# you execute all the queries you need
cursor = db.cursor()
cursor.execute("SELECT domain FROM com ORDER BY id ASC")
for result in result_generator(cursor):
url = "http://www.{0}".format(result[0])
print url
w = Wappalyzer(url)
out = w.analyze()
cursor.execute("""UPDATE com SET frameworks=%s, is_checked=1 WHERE domain=%s""",
(db.escape_string(out.get('frameworks', "")), result[0]))
# disconnect from server
db.commit()
db.close()

我的result_generator 从数据库中批量获取域名。批量大小为 10。

我的程序运行正常 IF 我删除了这一行

cursor.execute("""UPDATE com SET frameworks=%s, is_checked=1 WHERE domain=%s""",
(db.escape_string(out.get('frameworks', "")), result[0]))

否则它只运行第一批。

有人能告诉我我的代码有什么问题吗?

最佳答案

在我的脑海中,会不会是光标中的结果在下一次执行调用时被覆盖了?

您的 SELECT 调用会填充结果。对结果生成器的第一次调用工作正常,因为仍然有来自 SELECT 的结果。然后您使用同一个游标执行 UPDATE,这将“重置”游标结果。因此,对生成器的下一次调用终止了循环。如果删除 UPDATE,则不会重置游标结果,从而允许循环继续。

这只是一个猜测。我还没试过。

关于Python mysqldb fetchmany 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555938/

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