Python - 使用游标执行 SQL 查询,如何确定 SQL 是否有 > 0 个结果?

Python - use cursor to perform SQL query, how do I find out if there were > 0 results from SQL?

我有一个执行 SQL 查询的 python 游标,然后它将结果逐行输出到 CSV:

conn_string = "DRIVER={SQL Server};SERVER=sde-db;DATABASE=SDE;READONLY=True"
conn_sde = pypyodbc.connect(conn_string) # create connection object
cursor = conn_sde.cursor() # create cursor object

sql_query = """
    SELECT
        OBJECTID,
        Property_Number
    FROM
        dbo.PROPERTIES
"""

cursor.execute(textwrap.dedent(sql_query))

## then iterates over cursor and writes rows ##

但我现在发现一个问题,即如果我的 SQL 找到零结果,它会使我的 python 脚本崩溃。

我想做以下类型的事情:

if len(cursor) > 0:
  # write to CSV
else:
  # do something else

我知道我找不到游标的 len(),那么我如何找到游标中的行数,如果行数大于 0 则仍然使用该游标?

我希望上面的内容很清楚...

我认为您正在寻找 cursor.rowcount,如 Python 中指定的 PEP249

你可以做一个简单的:

cursor.execute(...)
rows = cursor.fetchall()

if rows:
    # write to csv
    for row in rows:
        print (row)
else:
    # do something else

行包含 select 子句中的所有值。

我认为你应该能够做到这一点:

all_rows = cursor.fetchAll()
if len(all_rows) > 0:
   # write to CSV
else:
   # do something else

@Benno,你快到了。你的方法是正确的。

步骤 1:首先获取游标中的行。

fetch_result = cursor.fetchall()

第 2 步: 检查是否已提取任何行

if fetch_result:
    # Write to CSV
else:
    # Whatever you want