Cyr*_*llC 4 python cursor deep-copy
我正在研究一个Trac-Plugin ......
要检索我的数据,我创建一个游标对象并获取结果表,如下所示:
db = self.env.get_db_cnx()
cursor = db.cursor()
cursor.execute("SELECT...")
Run Code Online (Sandbox Code Playgroud)
现在结果被用于3种不同的功能.我的问题是现在光标在第一次循环时被清理掉了(就像在http://packages.python.org/psycopg2/cursor.html这里说的那样)
然后我尝试复制光标对象,但这也失败了.该copy(cursor)函数似乎有一个大数据集的问题,并且该函数deepcopy(cursor)无论如何都会失败(根据这个错误http://bugs.python.org/issue1515).
我该如何解决这个问题?
agf*_*agf 14
存储任何有限迭代的值很简单:
results = list(cursor)
Run Code Online (Sandbox Code Playgroud)
迭代迭代并将结果存储在列表中.该列表可以根据需要重复多次.
您不需要光标的副本,只需要查询结果的副本.
对于这种特定情况,您应该执行9000在其注释中建议的内容 - 使用游标内置功能来获取列表的结果,该列表的结果应该比手动调用快或快list.