验证Excel单元格值并将其插入SQL错误HY000 Python

时间:2018-11-05 20:54:09

标签: python python-3.x pyodbc

如果长度大于12个字符,我试图验证excel数据,那么我需要在表(sql)中插入python代码

我尝试使用此代码,但出现以下错误

“ SQL包含0个参数标记,但提供了1个参数”,“ HY000”)

Excel中的值已经用('12ewrr334dgdgskngk')括起来了

,我在SSMS中运行了查询,并且工作正常 插入#finalresultset1(VIN)值('12ewrr334dgdgskngk')

import xlrd 
import pyodbc



book = xlrd.open_workbook(r'excelpath')
sheet = book.sheet_by_name(r'Sheet')


cnxn = pyodbc.connect('database connection')
cursor = cnxn.cursor()

query = """ INSERT INTO  #finalresultset1 ( VIN )  Values   """


VINSheet = sheet.ncols
for row in range(0,sheet.nrows):
    for col in range(0,VINSheet):
        cell_VIN = sheet.cell(row,col)
        if len(cell_VIN.value) >= 12:
           cursor.execute(query, cell_VIN.value)

        else:
            print('VIN Length must be greater than 17')

  

尝试过cursor.execute(query, (cell_VIN.value, ))
  这次我遇到了另一个错误

pyodbc.ProgrammingError: ('42S02', 
"[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]
Invalid object name '#finalresultset1'. (208) (SQLExecDirectW); 
[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]
Statement(s) could not be prepared. (8180)") 
     

我验证了临时表在数据库中是否存在


  

编辑

cursor.execute(" INSERT INTO #finalresultset1 ( product ) Values (?) ", 
                 cell_VIN.value) 

2 个答案:

答案 0 :(得分:0)

query = """ INSERT INTO  #finalresultset1 ( VIN )  Values (?)"""

(在(?)之后添加values

答案 1 :(得分:0)

  

无效的对象名称'#finalresultset1'

#finalresultset1local temporary table,因为其名称以#开头。您正在打开连接,然后尝试插入该表而不先创建它。这永远不会起作用,因为本地临时表仅存在于当前会话中,并且您的会话(由connect调用创建)尚未创建该表。