【问题标题】:Running simple query through python: No results通过python运行简单查询:没有结果
【发布时间】:2019-08-27 17:43:15
【问题描述】:

我正在尝试学习如何使用 python 和 pyodbc 模块获取 Microsoft SQL 查询结果,但在使用我在 Microsoft SQL Management Studio 中使用的相同查询返回相同结果时遇到了问题。

我查看了 pyodbc 文档并正确设置了我的连接......至少我在执行时没有遇到任何连接错误。唯一的问题似乎是返回表数据

import pyodbc
import sys
import csv

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=<server>;DATABASE=<db>;UID=<uid>;PWD=<PWD>')

cursor = cnxn.cursor()

cursor.execute("""
                SELECT request_id

                From audit_request request

                where request.reception_datetime between '2019-08-18' and '2019-08-19' """)

rows = cursor.fetchall()

for row in cursor:
    print(row.request_id)


当我运行上面的代码时,我在 python 终端窗口中得到了这个:

Process returned 0 (0x0)        execution time : 0.331 s
Press any key to continue . . .

我在 SQL Management Studio 中尝试了同样的查询,它返回了我正在寻找的结果。就使用 python 显示结果而言,我一定缺少一些东西。

【问题讨论】:

  • 你能做一个简单的SELECT GETDATE() 并得到结果吗?弄清楚这一点将帮助我们确定问题是出在您的数据中,还是出在您与数据库的连接上。
  • SELECT GETDATE()的结果相同
  • @NeerajAgarwal 可能有答案,for row in rows,而不是in cursor。让我们知道这是否有效。

标签: python sql pyodbc


【解决方案1】:

您实际上并没有设置您的cursor 以供使用。在执行之前你应该有这样的东西:

cursor = cnxn.cursor()

在此处了解更多信息:https://github.com/mkleehammer/pyodbc/wiki/Connection#cursor

【讨论】:

  • 我确实有。当我将所有内容粘贴到此线程中时,我错过了它。我会更新我的帖子。
  • 你应该有 for row in rows 而不是 for row in cursor。
  • 不错的收获,@NeerajAgarwal。添加为答案!
  • @NeerajAgarwal 就是这样!谢谢。
猜你喜欢
  • 2011-11-06
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2012-10-16
  • 2013-11-30
相关资源
最近更新 更多