Pandas 的 ValueError - 传递值的形状
ValueError with Pandas - shaped of passed values
我正在尝试使用 Pandas 和 PyODBC 从 SQL 服务器视图中提取内容并将内容转储到 excel 文件。
但是,我在转储数据框时遇到错误(我可以打印列和数据框内容):
ValueError: Shape of passed values is (1, 228), indices imply (2, 228)
此论坛上还有其他几个与同一问题相关的问题,但是 none 讨论从 SQL 服务器 table 拉取内容。
我不知道是什么导致了这个错误,改变视图以不同方式转换源列也没有效果。
这是我正在使用的 python 代码:
import pyodbc
import pandas as pd
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=servername;DATABASE=dbname;UID=username;PWD=password')
cursor = cnxn.cursor()
script = """
SELECT * FROM schema.ActiveEnrollmentCount
"""
cursor.execute(script)
columns = [desc[0] for desc in cursor.description]
data = cursor.fetchall()
df = pd.DataFrame(list(data), columns=columns)
writer = pd.ExcelWriter('c:\temp\ActiveEnrollment.xlsx')
df.to_excel(writer, sheet_name='bar')
writer.save()
我要提取的 2 列都是 3 位整数。
要从数据库查询数据,最好使用内置的 read_sql_query
函数,而不是手动执行并转换为数据帧。
对于您的示例,这将给出如下内容:
df = pd.read_sql_query(script, cnxn)
有关 read_sql
/to_sql
的更多说明,请参阅 docs。
这用于将数据从 sqlserver 导出到 excel sheet 。
import pyodbc
import pandas as pd
from openpyxl import Workbook
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=WINS2012;"
"Database=NameOfDataBase;"
"Trusted_Connection=yes;")
cursor = cnxn.cursor()
script = """
SELECT * FROM ims_employee
"""
cursor.execute(script)
columns = [desc[0] for desc in cursor.description]
data = cursor.fetchall()
df = pd.read_sql_query(script, cnxn)
writer = pd.ExcelWriter('C:\SqlExcel\Book1.xlsx')
df.to_excel(writer, sheet_name='bar')
writer.save()
我正在尝试使用 Pandas 和 PyODBC 从 SQL 服务器视图中提取内容并将内容转储到 excel 文件。
但是,我在转储数据框时遇到错误(我可以打印列和数据框内容):
ValueError: Shape of passed values is (1, 228), indices imply (2, 228)
此论坛上还有其他几个与同一问题相关的问题,但是 none 讨论从 SQL 服务器 table 拉取内容。
我不知道是什么导致了这个错误,改变视图以不同方式转换源列也没有效果。
这是我正在使用的 python 代码:
import pyodbc
import pandas as pd
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=servername;DATABASE=dbname;UID=username;PWD=password')
cursor = cnxn.cursor()
script = """
SELECT * FROM schema.ActiveEnrollmentCount
"""
cursor.execute(script)
columns = [desc[0] for desc in cursor.description]
data = cursor.fetchall()
df = pd.DataFrame(list(data), columns=columns)
writer = pd.ExcelWriter('c:\temp\ActiveEnrollment.xlsx')
df.to_excel(writer, sheet_name='bar')
writer.save()
我要提取的 2 列都是 3 位整数。
要从数据库查询数据,最好使用内置的 read_sql_query
函数,而不是手动执行并转换为数据帧。
对于您的示例,这将给出如下内容:
df = pd.read_sql_query(script, cnxn)
有关 read_sql
/to_sql
的更多说明,请参阅 docs。
这用于将数据从 sqlserver 导出到 excel sheet 。
import pyodbc
import pandas as pd
from openpyxl import Workbook
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=WINS2012;"
"Database=NameOfDataBase;"
"Trusted_Connection=yes;")
cursor = cnxn.cursor()
script = """
SELECT * FROM ims_employee
"""
cursor.execute(script)
columns = [desc[0] for desc in cursor.description]
data = cursor.fetchall()
df = pd.read_sql_query(script, cnxn)
writer = pd.ExcelWriter('C:\SqlExcel\Book1.xlsx')
df.to_excel(writer, sheet_name='bar')
writer.save()