Python 无法将SQL Server表导入数据框架-返回“0”;“空数据帧”;,但是所有列名都正确,只是没有行
我正在使用Azure Data Studio处理一些访问SQL Server 2019数据库表的Python代码 我一直在遵循一个教程,其中第1部分在这里: 我从上面教程中使用的以下代码开始: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. #------------------------------
# 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'