多线程处理mysql数据
来源:互联网 发布:知乎怎么做微信销售 编辑:程序博客网 时间:2024/06/15 18:27
闲来无事研究了下py,发现多线程处理起数据来比PHP不要爽太多,废话少说上码
__author__ = 'yao'import mydbfrom time import ctime,sleepdef MyThread(db): for i in xrange(10): sql = "select * from y_user where c=0 limit 10" db.query(sql) result = db.fetchAllRows() for row in result: db.update("UPDATE y_user SET c=1 WHERE id=%s" % row[0])if __name__ == '__main__': dbconfig = {'host':'localhost', 'port': 3306, 'user':'root', 'passwd':'123456', 'db':'niuhome', 'charset':'utf8'} db = mydb.MySQL(dbconfig) MyThread(db)
开10个线程同时处理,在数据量大的时候处理效率比单纯在web端走php快很多,当然也可以玩php-cli。。。纯属本人闲着没事捣鼓,大牛就别看了
附上找来的db封装类
import MySQLdbimport timeclass MySQL: error_code = None _instance = None _conn = None _cur = None _TIMEOUT = 30 _timecount = 0 def __init__(self, dbconfig): try: self._conn = MySQLdb.connect(host=dbconfig['host'], port=dbconfig['port'], user=dbconfig['user'], passwd=dbconfig['passwd'], db=dbconfig['db'], charset=dbconfig['charset']) except MySQLdb.Error, e: self.error_code = e.args[0] error_msg = 'MySQL error! ', e.args[0], e.args[1] print error_msg if self._timecount < self._TIMEOUT: interval = 5 self._timecount += interval time.sleep(interval) return self.__init__(dbconfig) else: raise Exception(error_msg) self._cur = self._conn.cursor() self._instance = MySQLdb def query(self,sql): try: self._cur.execute("SET NAMES utf8") result = self._cur.execute(sql) except MySQLdb.Error, e: self.error_code = e.args[0] result = False return result def update(self,sql): try: self._cur.execute("SET NAMES utf8") result = self._cur.execute(sql) self._conn.commit() except MySQLdb.Error, e: self.error_code = e.args[0] result = False return result def insert(self,sql): try: self._cur.execute("SET NAMES utf8") self._cur.execute(sql) self._conn.commit() return self._conn.insert_id() except MySQLdb.Error, e: self.error_code = e.args[0] return False def fetchAllRows(self): return self._cur.fetchall() def fetchOneRow(self): return self._cur.fetchone() def getRowCount(self): return self._cur.rowcount def commit(self): self._conn.commit() def rollback(self): self._conn.rollback() def __del__(self): try: self._cur.close() self._conn.close() except: pass def close(self): self.__del__()
0 0
- 多线程处理mysql数据
- python多线程处理数据
- C++多线程处理数据
- opencv多线程处理数据
- 为多线程处理同步数据
- java多线程处理分库分表数据
- 多线程并发快速处理数据
- java 多线程处理导入数据
- 多线程webservie处理大量数据
- Java多线程处理大量数据
- Java多线程处理List数据
- MySQL 处理非法数据
- MySQL 处理重复数据
- mysql 处理重复数据
- MySQL 处理重复数据
- MySQL 处理重复数据
- MySQL 处理重复数据
- MySQL 处理重复数据
- Qt的Signal和Slot机制(一)
- c++primer exercises 7.0
- mybatis 一对一的映射(两种方式)
- 淡入动画
- hdu2421(数学题)
- 多线程处理mysql数据
- hdu 5348 MZL's endless loop dfs
- 【java】--多线程原理
- 新浪微博简记
- c语言常见函数
- [leetcode-60]Permutation Sequence(C)
- OC/iOS获取随机数
- Lua中,泛型for循环遍历table时,ipairs和pairs的区别
- ScaleAnimation 缩放动画效果