如果长度大于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)
答案 0 :(得分:0)
query = """ INSERT INTO #finalresultset1 ( VIN ) Values (?)"""
(在(?)
之后添加values
)
答案 1 :(得分:0)
无效的对象名称'#finalresultset1'
#finalresultset1
是local temporary table,因为其名称以#
开头。您正在打开连接,然后尝试插入该表而不先创建它。这永远不会起作用,因为本地临时表仅存在于当前会话中,并且您的会话(由connect
调用创建)尚未创建该表。