为了账号安全,请及时绑定邮箱和手机立即绑定

Python insert MySQL _mysql_exceptions.ProgrammingError: (1064,

Python insert MySQL _mysql_exceptions.ProgrammingError: (1064,

墨色风雨 2019-04-14 10:38:10
数据库结构FieldTypeNullKeyDefaultExtra+---------------+-------------+------+-----+---------+-------+Device_Namevarchar(24)YESNULLIP_Addressvarchar(24)YESNULLDRACvarchar(24)YESNULLSupport_Groupvarchar(24)YESNULLDomainvarchar(24)YESNULLOUvarchar(24)YESNULLIEMvarchar(24)YESNULLOSvarchar(24)YESNULLOS_Versionvarchar(24)YESNULLEnvironmentvarchar(24)YESNULLRiskvarchar(24)YESNULLFunctionvarchar(24)YESNULLAppvarchar(24)YESNULLOwnervarchar(24)YESNULLOwner_mailvarchar(24)YESNULLCountryvarchar(24)YESNULLCityvarchar(24)YESNULLSitevarchar(24)YESNULLLocationvarchar(24)YESNULLCategoryvarchar(24)YESNULLManufacturervarchar(24)YESNULLModelvarchar(24)YESNULLRackvarchar(24)YESNULLPowervarchar(24)YESNULLSerialvarchar(24)YESNULLWarrantyvarchar(24)YESNULLDecomm_Commvarchar(24)YESNULLProjectvarchar(24)YESNULLManagervarchar(24)YESNULLComm_datavarchar(24)YESNULL代码!/bin/pythonimportosimportxlrdimportMySQLdbimportreDB_HOST='127.0.0.1'DB_USER='root'DB_PASS='Jun06jun'DB_NAME='list'db=MySQLdb.connect(host=DBHOST,user=DBUSER,passwd=DBPASS,db=DBNAME)cursor=db.cursor()a=[]os.chdir('/home/ran/Desktop')data=xlrd.open_workbook('list.xlsx')table=data.sheets()[0]nrows=table.nrowsforiinrange(nrows):c=table.row_values(i)printlen(c)fori_rowinrange(len(c)):ifc[i_row]=='':c[i_row]="NULL"sql="insertintoJLLvalues(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)%(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],c[11],c[12],c[13],c[14],c[15],c[16],c[17],c[18],c[19],c[20],c[21],c[22],c[23],c[24],c[25],c[26],c[27],c[28],c[29])"cursor.execute(sql)Excel中某一列数据AUCFD317-Joeyx.x.x.xVMWareJoeyLinuxN/AN/ALinuxLinux(MLOS)-RHEL564bitPatch3ProductionNULLePOServerMcAfeeGTIProxyAppliance2.0.0xxxxxServerRoomServer-VirtualVMware,Inc.VMwareVirtualPlatformNULLNULLVmwareN/A-VMNULLNULLNULLNULL发生的错误mysqlexceptions.ProgrammingError:(1064,"YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s'atline1")
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

错误:
sql="insertintoJLLvalues(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)%(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],c[11],c[12],c[13],c[14],c[15],c[16],c[17],c[18],c[19],c[20],c[21],c[22],c[23],c[24],c[25],c[26],c[27],c[28],c[29])"
正确:
sql="insertintoJLLvalues('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"%(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],c[11],c[12],c[13],c[14],c[15],c[16],c[17],c[18],c[19],c[20],c[21],c[22],c[23],c[24],c[25],c[26],c[27],c[28],c[29])
参考@displaynone的来个简化版,python的语法糖真多
sql="insertintoJILvalues(%s)"%(','.join('"'+str(item)+'"'foriteminc))
                            
查看完整回答
反对 回复 2019-04-14
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

因为string被没有正确赋值,顺便贴上简化版。
c=[1+iforiinrange(29)]
sql="insertintoJLLvalues("+','.join('%s'foriinrange(29))+")"
finall=sql%tuple(c)
更简单版(为什么要折腾%s呢哈哈):
sql="insertintoJLLvalues"+str(tuple(c))
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 591 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信