这里我试图将数据从excel导入到mysql表中,但是收到的错误如下:并非所有参数都在字符串格式化期间转换
import xlrd
import MySQLdb,os,os.path,datetime as dt
os.chdir("file path")
filename = raw_input("Enter the file name: ",)
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0)
date = dt.datetime.today().strftime("%d/%m/%y")
fname = filename
user = 'UMD'
database = MySQLdb.connect (host="localhost", user = "root", passwd = "psswd", db = "MRKT_DATA")
cursor = database.cursor()
for r in range(0, sheet.nrows):
NAME = sheet.cell(r,0).value
EMAIL_ID = sheet.cell(r,1).value
ALT_NUMBR = sheet.cell(r,2).value
DOB = sheet.cell(r,3).value
MOBILE = sheet.cell(r,4).value
FUNCTIONAL_AREA = sheet.cell(r,5).value
SPECIALIZATION = sheet.cell(r,6).value
INDUSTRY = sheet.cell(r,7).value
RESUME_TITLE = sheet.cell(r,8).value
KEYSKILL = sheet.cell(r,9).value
WORK_EXP = sheet.cell(r,10).value
CURNT_EMPLYR = sheet.cell(r,11).value
PREV_EMPLYR = sheet.cell(r,12).value
CURNT_SAL = sheet.cell(r,13).value
LEVEL = sheet.cell(r,14).value
CURNT_LOC = sheet.cell(r,15).value
PREF_LOC = sheet.cell(r,16).value
COURSE_PRI_HIGH_EDU = sheet.cell(r,17).value
SPLZTN_PRI_HIGH_EDU = sheet.cell(r,18).value
INST_PRI_HIGH_EDU = sheet.cell(r,19).value
COURSE_SEC_HIGH_EDU = sheet.cell(r,20).value
SPLZTN_SEC_HIGH_EDU = sheet.cell(r,21).value
INST_SEC_HIGH_EDU = sheet.cell(r,22).value
LAST = sheet.cell(r,23).value
ACTIVE = sheet.cell(r,24).value
DATE = sheet.cell(r,25).value
GENDER = sheet.cell(r,26).value
AGE = sheet.cell(r,27).value
ADDRESS = sheet.cell(r,28).value
RESUME_ID = sheet.cell(r,29).value
query = INSERT INTO DATA (NAME,EMAIL_ID,ALT_NUMBR,DOB,MOBILE,FUNCTIONAL_AREA,SPECIALIZATION,INDUSTRY,RESUME_TITLE,KEYSKILL,WORK_EXP,CURNT_EMPLYR,PREV_EMPLYR,CURNT_SAL,LEVEL,CURNT_LOC,PREF_LOC,COURSE_PRI_HIGH_EDU,SPLZTN_PRI_HIGH_EDU,INST_PRI_HIGH_EDU,COURSE_SEC_HIGH_EDU,SPLZTN_SEC_HIGH_EDU,INST_SEC_HIGH_EDU,LAST,ACTIVE,DATE,GENDER,AGE,ADDRESS,RESUME_ID,MARKET_TYPE,DATE_LOGGED,SOURCE) VALUES ('%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','%s','%s');"
values = (NAME,EMAIL_ID,ALT_NUMBR,DOB,MOBILE,FUNCTIONAL_AREA,SPECIALIZATION,INDUSTRY,RESUME_TITLE,KEYSKILL,WORK_EXP,CURNT_EMPLYR,PREV_EMPLYR,CURNT_SAL,LEVEL,CURNT_LOC,PREF_LOC,COURSE_PRI_HIGH_EDU,SPLZTN_PRI_HIGH_EDU,INST_PRI_HIGH_EDU,COURSE_SEC_HIGH_EDU,SPLZTN_SEC_HIGH_EDU,INST_SEC_HIGH_EDU,LAST,ACTIVE,DATE,GENDER,AGE,ADDRESS,RESUME_ID,user,date,fname)
Cursor.execute(query, values)
cursor.close()
database.commit()
database.close()
print "no of rows : ", sheet.nrows
print ""
print " Done! "
print ""
Error:
Traceback (most recent call last):
File "Excel2Mysql.py", line 60, in <module>
cursor.execute(query, values)
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
答案 0 :(得分:1)
您要插入33个项目,但只插入32个位置。请尝试以下代码。 (我添加了另一个%s
)
query = INSERT INTO DATA (NAME,EMAIL_ID,ALT_NUMBR,DOB,MOBILE,FUNCTIONAL_AREA,SPECIALIZATION,INDUSTRY,RESUME_TITLE,KEYSKILL,WORK_EXP,CURNT_EMPLYR,PREV_EMPLYR,CURNT_SAL,LEVEL,CURNT_LOC,PREF_LOC,COURSE_PRI_HIGH_EDU,SPLZTN_PRI_HIGH_EDU,INST_PRI_HIGH_EDU,COURSE_SEC_HIGH_EDU,SPLZTN_SEC_HIGH_EDU,INST_SEC_HIGH_EDU,LAST,ACTIVE,DATE,GENDER,AGE,ADDRESS,RESUME_ID,MARKET_TYPE,DATE_LOGGED,SOURCE) VALUES ('%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','%s','%s','%s');"