Pandas read_sql 依赖于驱动程序的不一致行为?

Pandas read_sql inconsistent behaviour dependent on driver?

当我 运行 从我的本地机器查询到 SQL 服务器数据库时,数据被返回。如果我 运行 来自 JupyterHub 服务器的相同查询(使用 ssh),将返回以下内容:

TypeError: 'NoneType' object is not iterable

暗示它没有得到任何数据。

两个系统上的连接字符串都正常(尽管不同),因为 运行使用连接字符串 -

使用相同的存储过程在两个系统上都可以正常工作

Local= "Driver={SQL Server};Server=DNS-based-address;Database=name;uid=user;pwd=pwd"

Hub = "DRIVER=FreeTDS;SERVER=IP.add.re.ss;PORT=1433;DATABASE=name;UID=dbuser;PWD=pwd;TDS_Version=8.0"

FreeTDS 驱动程序中是否有影响 chunksize 的东西,或者意味着在原始查询中需要设置 nocount NoneType object is not iterable error in pandas - 我顺便尝试了这个修复,但没有成功。

您使用的是基于 FreeTDS 构建的 pymssql 吗?

对于 SQL-Server,您还可以尝试 Microsoft JDBC 驱动程序和 python 包 jaydebeapihttps://github.com/microsoft/mssql-jdbc.

import pandas as pd
import pymssql

conn = pymssql.connect(
    host = r'192.168.254.254',
    port = '1433',
    user = r'user',
    password = r'password',
    database = 'DB_NAME'
)

query = """SELECT * FROM db_table"""

df = pd.read_sql(con=conn, sql=query)