2014-02-15 2 views
0

파이썬 script.it을 사용하여 MySQL 데이터베이스에 내 .xls 파일 데이터를 삽입하려면 동적으로 테이블을 만들고 MySQL 테이블에 데이터를 동적으로 삽입해야합니다. 동적으로 "테이블 만들기"쿼리를 만들 수 있지만 "INSERT"쿼리를 만들 수 없습니다. plz 도움이, 감사합니다.Python을 사용하여 MySQL 데이터베이스에 Excel 파일 데이터를 삽입하십시오.

import MySQLdb 
import xlrd 
list = [] 
list1 = [] 
i = 0 
db = MySQLdb.connect("127.0.0.1","root","rvrj","ravi") 
cursor = db.cursor() 
str = "create table Table1 (" 
workbook = xlrd.open_workbook('C:\\Users\\Meenaraj\\Desktop\\sample - Copy.xls', formatting_info=True) 
worksheet = workbook.sheet_by_name('Sheet1') 
num_rows = worksheet.nrows - 1 
print 'number of rows' , num_rows 
num_cells = worksheet.ncols - 1 
print 'number of cells' , num_cells 
curr_row = 0 
while i <= num_cells: 
    cv=worksheet.cell_value(0,i) 
    ct=worksheet.cell_type(1,i) 
    print cv 
    print ct 
    if ct == 1: 
     ct1 = "VARCHAR(20)" 
    elif ct == 2: 
     ct1 = "INTEGER" 
    elif ct == 3: 
     ct1 = "DATE" 
    elif ct == 4: 
     ct1 = "BOOLEAN" 
    if i < num_cells: 
     str = str + cv + " " + ct1 + "," + " " 

    elif i == num_cells: 
     str = str + cv + " " + ct1 + ");" 

    list1.append(cv) 
    i = i + 1 

print 'number of cur' , curr_row 
while curr_row < num_rows: 
    curr_row += 1 
    row = worksheet.row(curr_row) 
    print 'Row:', curr_row 
    print row 
    curr_cell = -1 
    while curr_cell < num_cells: 
     curr_cell += 1 
     # Cell Types: 0=Empty, 1=Text, 2=Number, 3=Date, 4=Boolean, 5=Error, 6=Blank 
     cell_type = worksheet.cell_type(curr_row, curr_cell) 
     cell_value = worksheet.cell_value(curr_row, curr_cell) 
     list.append(cell_value) 
     #str1 = 
     print ' ', cell_type, ':', cell_value 
data = [worksheet.row_values(i) for i in xrange(worksheet.nrows)] 
v=data[1]'''header/col names of My Excel files''' 
print str 
cursor.execute("DROP TABLE IF EXISTS Table1") 
cursor.execute(str) 
print "Table created" 
str1="INSERT INTO Table1 (FNAME,MNAME,LNAME)VALUES(%s,%s,%s);" 
values=(v[0],v[1],v[2]) 
r=values 
cursor.execute(str1,values) 
cursor.execute("select * from Table1") 
try: 
    results = cursor.fetchall() 
    print results 
    cursor.close() 
    db.close() 
except: 
    print "Error: unable to fetch data" 
+0

.xls 파일 만 사용해야하므로 일부 사용자는 .csv 파일로 변환 한 다음 MySQL 테이블에 삽입하려고 시도하지만 미안하지만 .xls 파일 만 사용해야합니다. 감사합니다. – user3210328

+0

이 포트를 파이썬 : [CSV to mySQL - 테이블 생성 및 데이터 삽입] (http://www.hawkee.com/snippet/8320/) –

+0

나는 파이썬에 익숙하지 않으므로 파이썬으로 이식 할 수 없다. 나 한테 뭔가 제안 해 주 시겠어요, 고마워요. – user3210328

답변

0

삽입 쿼리를 실행 한 후에 db.commit()을 추가해야 작동합니다. 시도했습니다.

관련 문제