#!/usr/bin/python
#coding=utf-8
import MySQLdb
import gevent
import xlrd
import sys
class mysqldb:
def __init__(self,host,username,password,db,charset='utf8'):
self.host = host
#self.port = port
self.username = username
self.password = password
self.db = db
self.charset = charset
self.connect()
def connect(self):
self.conn = MySQLdb.connect(host=self.host,
#port=self.port,
user=self.username,
passwd=self.password,
db=self.db,
charset=self.charset
)
self.asynchronous(sys.argv[1])
def run(self,xxlist):
self.cur = self.conn.cursor()
sql = "insert into ENQD(dstip,dstloc,dstisp,srcip,srcloc,srcisp,status) VALUES (%s,%s,%s,%s,%s,%s,%s)"
excutesqls = self.cur.executemany(sql,xxlist)
self.conn.commit()
def asynchronous(self,file):
data_list = []
book = xlrd.open_workbook(file)
sheet = book.sheets()[0]
for r in range(1,sheet.nrows):
dstip = sheet.cell(r,0).value
dstloc = sheet.cell(r,1).value
dstisp = sheet.cell(r,2).value
srcip = sheet.cell(r,3).value
srcloc = sheet.cell(r,4).value
srcisp = sheet.cell(r,5).value
status = sheet.cell(r,6).value
values = (dstip.encode("utf-8"), dstloc.encode("utf-8"), dstisp.encode("utf-8"), srcip.encode("utf-8"), srcloc.encode("utf-8"), srcisp.encode("utf-8"), int(status))
data_list.append(values)
g_l = [gevent.spawn(self.run,data_list[i:i+100])for i in range(0,len(data_list),100)]
gevent.joinall(g_l)
print "插入%s条数据" % (sheet.nrows-1)
self.cur.close()
self.conn.close()
if __name__ == '__main__':
if not sys.argv:
print "Please provide file path as parameter!"
exit(1)
else:
t = mysqldb('localhost', 'root', '123456', 'xiao')