Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从smalldatetime到float的SQL转换失败_Python_Sql Server_Python 2.7_Pypyodbc - Fatal编程技术网

Python 从smalldatetime到float的SQL转换失败

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,

我使用PyODBC将一条新记录插入MS SQL Server表中,并使用下面的参数化查询

我已经包括了下面的表结构。对于执行查询,我在运行时添加了调试值的内联注释

    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而不是浮点数。是否能够突出显示该字段。。