Python使用MySQLdb封装基本操作类
来源:互联网 发布:热水器选购知乎 编辑:程序博客网 时间:2024/06/07 05:43
经常用到python操作mysql数据库,于是自己封装了基本操作mysql数据库的类,持续更新
# -*- coding:utf-8 -*-import MySQLdbimport datetimeimport sysreload(sys)sys.setdefaultencoding('utf-8')#封装MySQLdb类基本操作mysqldbclass mysqldb: conn = '' cursor = '' def __init__(self,host1='localhost',user1='root',passwd1='www',database1='test',charset1='utf8'): try: print 'init_ ok' self.conn=MySQLdb.connect(host=host1,user=user1,passwd=passwd1,db=database1,port=3306,charset=charset1); self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor) except MySQLdb.Error,e: error = 'Connect failed! ERROR (%s): %s' %(e.args[0],e.args[1]) print error sys.exit() #针对读操作返回结果集 def _exeCute(self,sql=''): try: self.cursor.execute(sql) records = self.cursor.fetchall() return records except MySQLdb.Error,e: error = 'MySQL execute failed! ERROR (%s): %s' %(e.args[0],e.args[1]) print error #sys.exit() #针对更新,删除,事务等操作失败时回滚 def _exeCuteCommit(self,sql=''): try: self.cursor = self.conn.cursor() self.cursor.execute(sql) self.conn.commit() except MySQLdb.Error,e: self.conn.rollback() error = 'MySQL execute failed! ERROR (%s): %s' %(e.args[0],e.args[1]) print error #sys.exit() #创建表 #tablename:表名称,attr_dict:属性键值对,constraint:主外键约束 #attr_dict:{'book_name':'varchar(200) NOT NULL'...} #constraint:PRIMARY KEY(`id`) def _createTable(self,table,attr_dict,constraint): sql = '' sql_mid = '`id` bigint(11) NOT NULL AUTO_INCREMENT,' for attr,value in attr_dict.items(): sql_mid = sql_mid + '`'+attr + '`'+' '+ value+',' sql = sql + 'CREATE TABLE IF NOT EXISTS %s ('%table sql = sql + sql_mid sql = sql + constraint sql = sql + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' print '_createTable:'+sql self._exeCuteCommit(sql) #查询表内容 #cond_dict:{'name':'xiaoming'...} #order:'order by id desc' def _select(self,table,cond_dict='',order=''): consql = ' ' if cond_dict!='': for k,v in cond_dict.items(): consql = consql+k+'='+v+' and' consql = consql + ' 1=1 ' sql = 'select * from %s where '%table sql = sql + consql + order print '_select:'+sql return self._exeCute(sql) #插入单条数据 def _insert(self,table,attrs,value): #values_sql = ['%s' for v in attrs] attrs_sql = '('+','.join(attrs)+')' values_sql = ' values('+','.join(value)+')' sql = 'insert into %s'%table sql = sql + attrs_sql + values_sql print '_insert:'+sql self._exeCuteCommit(sql) #插入多条数据 #attrs:[id,name,...] #values:[[1,'jack'],[2,'rose']] def _insertMany(self,table,attrs,values): values_sql = ['%s' for v in attrs] attrs_sql = '('+','.join(attrs)+')' values_sql = ' values('+','.join(values_sql)+')' sql = 'insert into %s'%table sql = sql + attrs_sql + values_sql print '_insertMany:'+sql try: print sql #print values for i in range(0,len(values),20000): self.cursor.executemany(sql,values[i:i+20000]) self.conn.commit() except MySQLdb.Error,e: self.conn.rollback() error = '_insertMany executemany failed! ERROR (%s): %s' %(e.args[0],e.args[1]) print error sys.exit() def _now(self): now0 = datetime.datetime.now() now = now0.strftime('%Y-%m-%d %H:%M:%S') print now def _close(self): self.cursor.close() self.conn.close() def __del__(self): self._close()if __name__ == '__main__': a = mysqldb('localhost','root','www','test','utf8') a._now() table='test_mysqldb' attrs={'name':'varchar(200) DEFAULT NULL','age':'int(11) DEFAULT NULL'} constraint='PRIMARY KEY(`id`)' a._createTable(table,attrs,constraint) col = ['name','age'] val = ['\'xiegonghai\'','25'] a._insert('test_mysqldb',col,val) print a._select(table)
0 0
- Python使用MySQLdb封装基本操作类
- python使用MySQLdb的基本操作
- Python使用MySQLdb操作MySQL
- python使用MySQLdb操作数据库
- python开发 Mysqldb安装及基本操作
- Python 一个简单的MySQLdb封装类
- Python 一个简单的MySQLdb封装类
- python MySQLdb简单封装
- python操作mysql数据库基本类封装
- MySQLdb的使用 Python操作Mysql
- 关于python使用MySQLdb新增操作
- python中使用MySQLdb模块进行操作
- python下使用MySQLdb操作MYSQL数据库
- python中操作MySQLdb
- python MySQLdb简单操作
- Python MYSQLdb操作数据库
- Python MySQLdb 操作
- python的MySqldb使用
- bzoj 1975 [Sdoi2010]魔法猪学院
- LeetCode 9. Palindrome Number
- SDUT OJ 数据结构实验之链表六:有序链表的建立
- XStream序列化和反序列化xml文件
- vijos p1729 Knights
- Python使用MySQLdb封装基本操作类
- poj 3041 Asteroids 题解
- poj 1469 COURSES 题解
- poj 1325 Machine Schedule 题解
- Android性能优化
- BZOJ 1093 最大半连通子图 题解
- 数据库基本语句
- 洛谷 p1352 没有上司的舞会 题解
- 设计模式学习(Java)——单例模式