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 包 jaydebeapi
:https://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)
当我 运行 从我的本地机器查询到 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 包 jaydebeapi
:https://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)