Python 无法将SQL Server表导入数据框架-返回“0”;“空数据帧”;,但是所有列名都正确,只是没有行

Python 无法将SQL Server表导入数据框架-返回“0”;“空数据帧”;,但是所有列名都正确,只是没有行,python,sql-server,pandas,dataframe,import,Python,Sql Server,Pandas,Dataframe,Import,我正在使用Azure Data Studio处理一些访问SQL Server 2019数据库表的Python代码 我一直在遵循一个教程,其中第1部分在这里: 我从上面教程中使用的以下代码开始: # The Python script below imports the dataset from the dbo.rental_data table in your database to a pandas data frame df. #------------------------------

我正在使用Azure Data Studio处理一些访问SQL Server 2019数据库表的Python代码

我一直在遵循一个教程,其中第1部分在这里:

我从上面教程中使用的以下代码开始:

# The Python script below imports the dataset from the dbo.rental_data table in your database to a pandas data frame df.
#---------------------------------------------------------------------------------------------------
import pyodbc
import pandas

# Connection string to your SQL Server instance
server = 'computername\servername' 
database = 'TutorialDB' 
username = 'XXXXXXXX' 
password = 'XXXXXXXX' 

conn_str = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

query_str = 'SELECT Year, Month, Day, Rentalcount, Weekday, Holiday, Snow FROM dbo.rental_data'

df = pandas.read_sql(sql=query_str, con=conn_str)

print("Data frame:", df)
此代码在教程数据库表上运行时,工作正常,最后一行正确打印整个数据帧

但是,当我在同一数据库中、同一服务器上、名为TestDB的数据库表上使用相同的凭据修改相同的代码时,最后一行错误地返回“空数据帧”

我尝试了各种查询字符串,例如

query_str = 'SELECT Rownumber FROM dbo.TestDB' (which is just an incremental integer)

但它都返回“空数据帧”

它似乎创建了一个空的数据框,并返回标题OK,因为如果我添加代码来显示形状,它将是(0,28),并且有28列。。。我可以让它列出列名,但它无法填充行本身

我想也许熊猫数据帧不喜欢任何空值

或者是否存在它可能不喜欢的特定数据类型? 还是我错过了什么

我使用的列中的数据类型是日期/时间、int、tinyint、float和nvarchar的混合

如果直接在MSMS中运行SQL查询,它将返回正确的数据

我认为这可能是一个问题,因为既有2019dev版本,也有32位的旧SQL版本,但我检查了连接参数,一切似乎都正常

这件事我已经琢磨了一段时间了

如有任何建议,我们将不胜感激

query_str = 'SELECT * FROM dbo.TestDB'