因爲工作需要,所以測試一下使用Python讀Excel數據到MySQL,在此記錄下.
#!/usr/bin/env python #coding:utf-8 import xlrd import MySQLdb import datetime xlsfile=r'C:\Users\XUWU\Desktop\data.xlsx' book = xlrd.open_workbook(xlsfile) #獲取sheet的數量 count = len(book.sheets()) #設置連接數據庫 database = MySQLdb.connect(host='192.168.1.30',user='root',passwd='123456',db='crm') #設置字符集 database.set_character_set('utf8') cursor = database.cursor() cursor.execute('SET NAMES utf8;') cursor.execute('SET CHARACTER SET utf8;') cursor.execute('SET character_set_connection=utf8;') starttime = datetime.datetime.now() print '開始時間:%s' % (starttime) #循環sheet for i in range(0,count-1): sheet = book.sheet_by_index(i) query = """INSERT INTO bill_test ( member_id, name, tel, phone, dq_datetime, address, parking) VALUES ( %s, %s, %s, %s, %s, %s, %s)""" #循環每一行 for r in range(1, sheet.nrows): #idseq = sheet.cell(r,0).value member_id = sheet.cell(r,1).value name = sheet.cell(r,2).value tel = sheet.cell(r,3).value phone = sheet.cell(r,4).value #dq_datetime = sheet.cell(r,5).value #讀日期這裏要處理一下,不然全變成數字了 dq_datetime_num=xlrd.xldate_as_tuple(sheet.cell(r,5).value,0) dq_datetime = '%s/%s/%s' % (dq_datetime_num[0],dq_datetime_num[1],dq_datetime_num[2]) address = sheet.cell(r,6).value parking = sheet.cell(r,7).value values = (member_id, name, tel, phone, dq_datetime, address, parking) #print query,values cursor.execute(query, values) cursor.close() database.commit() database.close() endtime=datetime.datetime.now() print '結束時間:%s' % (endtime) print '用時:%s 秒' % (endtime-starttime)
測試表結構:
CREATE TABLE `bill_test` ( `idseq` mediumint(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` int(10) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, `tel` varchar(20) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, `dq_datetime` varchar(20) DEFAULT NULL, `address` varchar(200) DEFAULT NULL, `parking` varchar(200) DEFAULT NULL, PRIMARY KEY (`idseq`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
程序執行情況:
查詢結果: