Python 从smalldatetime到float的SQL转换失败
我使用PyODBC将一条新记录插入MS SQL Server表中,并使用下面的参数化查询 我已经包括了下面的表结构。对于执行查询,我在运行时添加了调试值的内联注释Python 从smalldatetime到float的SQL转换失败,python,sql-server,python-2.7,pypyodbc,Python,Sql Server,Python 2.7,Pypyodbc,我使用PyODBC将一条新记录插入MS SQL Server表中,并使用下面的参数化查询 我已经包括了下面的表结构。对于执行查询,我在运行时添加了调试值的内联注释 sql_statement = """ INSERT INTO [hr].[VMS.Requisitions] (VMSRequisitionID, JobTitle, HiringManagerEEID,
sql_statement = """
INSERT INTO [hr].[VMS.Requisitions]
(VMSRequisitionID,
JobTitle,
HiringManagerEEID,
GroupID,
DepartmentID,
LocationID,
MinRate,
MaxRate,
LaborTypeID,
RequisitionStatusID,
Openings,
OpeningsRemaining,
RequisitionCreateDate,
RequisitionApproveDate,
RequisitionOpenDate,
RequisitionCloseDate,
CreateDate,
ModifyDate)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"""
cursor.execute(sql_statement,(requisition.VMSRequisitionID, # {unicode} 'xxx'
requisition.JobTitle, # {unicode} 'xxx'
requisition.HiringManagerEEID, # {int} 3
requisition.GroupID, # {int} 36
requisition.DepartmentID, # {int} 189
requisition.LocationID, # {int} 44
requisition.MinRate, # {float} 33.5
requisition.MaxRate, # {float} 50.24
requisition.LaborTypeID, # {int} 5
requisition.RequisitionStatusID, # {int} 9
requisition.Openings, # {int} 11
requisition.OpeningsRemaining, # {int} 11
requisition.RequisitionCreateDate, # {datetime} 2017-07-10 11:41:36
requisition.RequisitionApproveDate, # {NoneType} None
requisition.RequisitionOpenDate, # {NoneType} None
requisition.RequisitionCloseDate, # {NoneType} None
now, # {str} '2017-10-04T12:37:14'
now, # {str} '2017-10-04T12:37:14'
))
cursor.commit()
我收到以下错误:
编程错误:(u'42000',u'[42000][Microsoft][ODBC SQL Server驱动程序][SQL Server]不允许从数据类型smalldatetime隐式转换为float。请使用转换函数运行此查询。“)
我已经调试了几个小时了,不知道出了什么问题。我相信,当我在表中添加MinRate和MaxRate列时,问题就出现了,所以假设有一个问题,浮动没有使用参数化查询正确转换
表结构如下:
RequisitionID int Primary Key, Identity Column / Auto-increment
VMSRequisitionID varchar(255) Required
JobTitle varchar(255) Required
HiringManagerEEID int NULLs allowed
GroupID int NULLs allowed
DepartmentID int NULLs allowed
LocationID int NULLs allowed
MinRate float NULLs allowed
MaxRate float NULLs allowed
LaborTypeID int NULLs allowed
RequisitionStatusID int NULLs allowed
Openings int NULLs allowed
OpeningsRemaining int NULLs allowed
RequisitionCreateDate datetime NULLs allowed
RequisitionApproveDate datetime NULLs allowed
RequisitionOpenDate datetime NULLs allowed
RequisitionCloseDate datetime NULLs allowed
CreateDate datetime Required
ModifyDate datetime Required
有什么想法吗?我正在使用Python2.7和PyODBC 1.3.3。请显示您的表结构好吗<代码>exec sp_表列@Loïc我无法在我的环境中运行您的查询,但使用表结构编辑了上面的问题描述。谢谢你的关注!这很奇怪,从我的观点来看,你的问题看起来不错。您确定这是触发崩溃的查询吗?您能打印为插入生成的SQL吗?嗯,我无法通过调试来提取查询,但我确定浮点值出了问题。我假设SQL Server出于某种原因将这些值解释为shortdatetime而不是浮点数。是否能够突出显示该字段。。