网上查询的资料,利用python进行多线程连接数据库,修改了部分
#!/usr/bin/env python import thread,threading import os,sys,time,getopt,MySQLdb optmap = { 'user' : 'test_lvs', 'passwd' : 'test_lvs', 'host' : '192.168.0.1', 'port' : 3306, 'db' : 'zhp', 'use_unicode' : True, 'charset' : 'utf8', 'unix_socket':'/my/base/mysql.sock' } db_conn=MySQLdb.connect(**optmap) db_cursor=db_conn.cursor() TOTAL_USERS=1111100 THREAD_NUM=16 class Run_sp(threading.Thread): def __init__(self,thread_num,user_list): threading.Thread.__init__(self) self.thread_num=thread_num self.user_list=user_list def run(self): db_conn=MySQLdb.connect(**optmap) db_cursor=db_conn.cursor() num=0 for user in self.user_list: num+=1 account=user[0] password=user[1] #db_cursor.execute("select id,name from userinfo where id='%s' and name ='%s'"%(account,password) ) db_cursor.execute("update userinfo set updation=now() where id='%s' and name ='%s'"%(account,password) ) while 1: flag= db_cursor.nextset() if flag!=1:break db_cursor.fetchall() if num%1000==0: print "Thread %d execute %d users"%(self.thread_num,num) print "thread %d end at [%s]"%(self.thread_num,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))) db_cursor.close() db_conn.close() def main(): user_list=[] begin_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) sql="select id as Account,name as Password from userinfo limit %d"%TOTAL_USERS db_cursor.execute(sql) result=db_cursor.fetchall() for row in result: account=row[0] password=row[1] user_list.append((account,password)) # print "size of user_list:%d"%(len(user_list)) # print user_list # print user_list[0:2] account_in_each_thread=int(TOTAL_USERS/THREAD_NUM) # print "account_in_each_thread : %d\n"%account_in_each_thread thread_list=[] for i in range(0,THREAD_NUM): if i!=THREAD_NUM-1: thread_list.append(Run_sp(i,user_list[i*account_in_each_thread:(i+1)*account_in_each_thread])) else: thread_list.append( Run_sp(i,user_list[i*account_in_each_thread:]) ) thread_list[i].start() end_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) print "start at [%s]"%begin_time print "end at [%s]"%end_time main()