熊猫read_sql不一致的行为取决于驱动程序?

时间:2019-09-06 07:54:10

标签: python sql-server pandas freetds

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

  

TypeError:“ NoneType”对象不可迭代

说明它没有任何数据。

两个系统上的连接字符串都可以(尽管有所不同),因为使用连接字符串在两个系统上运行相同的存储过程都可以正常工作-

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驱动程序中是否有某些东西会影响块大小,或者是否意味着根据此NoneType object is not iterable error in pandas,原始查询中需要设置nocount-我尝试了此修补程序,但是没有解决方法。

1 个答案:

答案 0 :(得分:1)

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

对于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)