【问题标题】:pymssql connection does not return data and only prints the colum name?pymssql 连接不返回数据,只打印列名?
【发布时间】:2017-01-10 12:33:24
【问题描述】:

我正在尝试从服务器获取数据,所以我尝试如下

#!/usr/bin/python
import pymssql
conn = pymssql.connect(host='xxxx', user='xxx', password='xxx', database='xxx')


cursor = conn.cursor()
x2 = 'select * from result where url like\'%get content%\''
cursor.execute(x2)
data = cursor.fetchall()
field_names = [i[0] for i in cursor.description]
print field_names
print data

当我运行这个程序时,它只给出列名,data 变量为空。我不知道是什么原因。我该如何解决?

我在 Windows 中运行相同的脚本没有问题。但是当我在Ubuntu 14.04 中执行脚本时,data 变量为空。

【问题讨论】:

  • 你能在 fetchall() 命令之后还是之前检查 cursor.rowcount。
  • 在两种情况下(fetchall 之前和之后)都给出 -1 吗?如果是,则有问题查询或连接..
  • @HarshaBiyani 是的,两种情况都是结果-1。如果查询或连接有问题,意味着该列如何打印?
  • 哦对了。。你试过简单的查询吗?喜欢 - 从结果中选择 *?
  • @HarshaBiyani 是的。我试过。但是行没有获取。 :(

标签: python sql-server pymssql


【解决方案1】:

这是 Ubuntu 上 PyMSSQL 1.0.x 的一个已知错误。见No data returned from MSSQL server。解决办法是升级到>= 2.0.1版本。

由于 PyMSSQL 1.0.x 和 FreeTDX 版本的问题 存储库,PyMSSQL 不再从 MSSQL 返回任何信息 数据库查询。这意味着您不能使用 fetchone() 或 fetchall() 或类似的方法从数据库查询中获取数据。


Thomas Ward (teward) 在 2016-06-05 写道:

这是由于 freetdx 和 PyMSSQL 1.0.x 之间不兼容造成的。

解决方法是删除 python-pymssql 包,然后运行 ​​pip install pymssqleasy_install --upgrade pymssql 或类似的,以 获取最新的pymssql版本,大于等于 2.0.1.

还在 Xenial 和 Yakkety 以及 Trusty 上确认了这个问题。

【讨论】:

    【解决方案2】:

    你可以在 ubuntu 14.04 上试试 pyodbc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2019-03-07
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多