【问题标题】:Can I iterate over a cursor in pymssql more than once?我可以多次迭代 pymssql 中的游标吗?
【发布时间】:2016-08-09 13:57:10
【问题描述】:

例如,如果我在 python 中运行 sql 查询(使用 pymssql):

cursor.execute("""SELECT * FROM TABLE""")

然后我做:

for row in cursor:
   print row[0]

但随后我想再次循环遍历表以进行不同的操作,如下所示:

for row in cursor:
    print row[1]

(显然我可以在 1 个循环中完成这两项工作,这只是为了举例)。我可以在不重新执行查询的情况下执行此操作吗?

【问题讨论】:

    标签: python sql database


    【解决方案1】:

    不,pymssql 中的游标功能类似于生成器。一旦你从它们那里得到结果,它们就不再包含结果集了。

    这样做的唯一方法是将查询结果保存到中间列表。

    例如:

    import pymssql
    database = pymssql.connect()
    db_cursor = database.cursor()
    db_cursor.execute("""SELECT * FROM Table""")
    results = db_cursor.fetchall()
    for result in results:
        print(result[0])
    for result in results:
        print(result[1])
    

    【讨论】:

      【解决方案2】:

      不,您不能这样做,因为 pymssql 游标(python 生成器)与文件指针几乎相同,并且游标中的每一行都与文件中的每一行相同,一旦您越过一行,您就必须寻求开始和重新开始,游标的情况相同,您必须再次运行查询才能获取数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 2011-12-22
        • 2014-01-03
        • 2019-08-07
        • 1970-01-01
        • 2015-07-31
        • 2021-09-21
        相关资源
        最近更新 更多