Python数据库工具类MySQLdb使用

MySQLdb模块用于连接mysql数据库。
基本操作
#  -*- coding: utf-8 -*-      
#
mysqldb      
import time, MySQLdb      
     
# 连接      
conn=MySQLdb.connect(host= " localhost ",user= " root ",passwd= " root ",db= " test ",charset= " utf8 ")    
cursor = conn.cursor()      
 
# 删除表  
sql =  " drop table if exists user "  
cursor.execute(sql)  
 
# 创建  
sql =  " create table if not exists user(name varchar(128) primary key, created int(10)) "  
cursor.execute(sql)  
 
# 写入      
sql =  " insert into user(name,created) values(%s,%s) "    
param = ( " aaa ",int(time.time()))      
n = cursor.execute(sql,param)      
print  ' insert ',n      
     
# 写入多行      
sql =  " insert into user(name,created) values(%s,%s) "    
param = (( " bbb ",int(time.time())), ( " ccc ",33), ( " ddd ",44) )  
n = cursor.executemany(sql,param)      
print  ' insertmany ',n      
 
# 更新      
sql =  " update user set name=%s where name='aaa' "    
param = ( " zzz ")      
n = cursor.execute(sql,param)      
print  ' update ',n      
     
# 查询      
n = cursor.execute( " select * from user ")      
for row  in cursor.fetchall():      
     print row  
     for r  in row:      
         print r      
     
# 删除      
sql =  " delete from user where name=%s "    
param =( " bbb ")      
n = cursor.execute(sql,param)      
print  ' delete ',n      
 
# 查询      
n = cursor.execute( " select * from user ")      
print cursor.fetchall()      
 
cursor.close()      
     
# 提交      
conn.commit()  
# 关闭 
conn.close()
     

 

封装类操作

此处ConfigUtils工具类为Python配置工具类ConfigParser使用提供。在使用数据库连接时,建议每次调用利用try finally机制,做好资源回收。在对于异常处理时,其实不建议像如此处理。

异常处理,不要对大段代码捕获exception,而是要处理具体的异常,以便提高程序健壮性。

  class  DButils(object):
     def  __init__(self,filename,section):
        super(DButils, self). __init__()
         # read config
        cfg = ConfigUtils(filename).config
        self.cfg = cfg
        self.section = section
         # init mysql connection
        self.conn= MySQLdb.connect(
            host=cfg.get(section, ' host '),
            port = cfg.getint(section, ' port '),
            user=cfg.get(section, ' user '),
            passwd=cfg.get(section, ' passwd '),
            db=cfg.get(section, ' db '),
            connect_timeout=cfg.getint(section, ' connect_timeout ')
        )
        self.cur = self.conn.cursor()    
     
     def fetchmany(self,sql):
        sql = sql.replace( ' {$db} ',self.cfg.get(self.section, ' db '))
         try:
             return self.cur.fetchmany(self.cur.execute(sql))
         except Exception, e:
             print traceback.print_exc()
             print sql
   
     def fetchone(self,sql):
        sql = sql.replace( ' {$db} ',self.cfg.get(self.section, ' db '))
         try:
            self.cur.execute(sql)
             return self.cur.fetchone()
         except Exception, e:
             print traceback.print_exc()
             print sql

     def create(self,sql):
         try:
            self.cur.execute(sql)
            self.conn.commit()
         except Exception, e:
             print traceback.print_exc()

     def is_table_exit(self,tableName):
        show_sql =  ' show tables; '
         try:
             return tableName  in self.cur.fetchmany(self.cur.execute(show_sql))
         except Exception,e:
             print traceback.print_exc()
     def close_db(self):
        self.cur.close()
        self.conn.close()

db    = DButils( ' ini.cfg ', ' src_db ')
try:
    db.fetchone( 'select * from table limit 1')
finally:
    db.close_db()

 

转载于:https://www.cnblogs.com/snifferhu/p/4369184.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值