I am using pypyodbc to insert a new record into a MS SQL Server table with the parameterized query below.
I've included table structure below. For the execute query, I've added inline comments of debug values at runtime.
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()
I'm receiving the following error:
ProgrammingError: (u'42000', u'[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Implicit conversion from data type smalldatetime to float is not allowed. Use the CONVERT function to run this query.')
I've been debugging this for hours and don't understand what's going wrong. I believe the issue arose when I added in the MinRate and MaxRate columns to the table, so assume there is an issue with the floats not converting properly using a parameterized query.
Table structure is as follows:
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
Any thoughts? I am using Python 2.7 and pypyodbc 1.3.3.