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()

Python数据库工具类MySQLdb使用的更多相关文章

  1. MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

    MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...

  2. MinerDB.java 数据库工具类

    MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...

  3. 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类

    一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...

  4. Java调用Python脚本工具类

    [本文出自天外归云的博客园] 在网上查了很多方法都不成功,在google上搜到一篇文章,做了一些小修改,能够处理中文输出.提取一个运行python脚本的Java工具类如下: package com.a ...

  5. 工具类之数据库工具类:DBUtil(採用反射机制)

    常常操作数据库的码农们一定知道操作数据库是一项非常复杂的工作.它不仅要解决各种乱码的问题还要解决各种数据表的增删改查等的操作. 另外每次操作数据库都要用到数据库连接.运行SQL语句.关闭连接的操作.所 ...

  6. JDBC-自定义数据库工具类(DBService)

     写在前面的话:      (1)使用JDBC,必须要使用对应的jar包,该笔记中使用jar包:mysql-connector-java-5.1 .6-bin.jar      (2)使用连接池,一定 ...

  7. Java课程设计---创建数据库工具类

    1.传统的数据库操作 package com.java.mysql; import java.sql.Connection; import java.sql.DriverManager; import ...

  8. 数据库工具类 JdbcUtils

    什么时候自己创建工具类 如果一个功能经常用到 我们建议把这个功能做成工具类 创建JdbcUtils包含三个方法 1: 把几个字符串 定义为常量 2:得到数据库连接getConnection(); 3 ...

  9. python 数据库操作类

    #安装PyMySQL:pip3 install PyMySQL   #!/usr/bin/python3   #coding=utf-8   #数据库操作类     from  datetime  i ...

随机推荐

  1. mysql查找某连续字段中断的编号

    查询dj_pxlb表中zwh 空缺的值 select model2.zwh-1 as kqzwh from (select model1.zwh from dj_pxlb as model1 wher ...

  2. kafka 清除topic数据脚本

    原 kafka 清除topic数据脚本 2018年07月25日 16:57:13 pete1223 阅读数:1028     #!/bin/sh       param=$1   echo " ...

  3. 求前n项的斐波那契数列、求两个数的最小公倍数、求两个数的最大公约数

    class Fib(object):    def __call__(self,n):        a=[0,1]        for i in range(n-2):            an ...

  4. 1.3.1、CDH 搭建Hadoop在安装之前(端口---Cloudera Manager和Cloudera Navigator使用的端口)

    下图概述了Cloudera Manager,Cloudera Navigator和Cloudera Management Service角色使用的一些端口: Cloudera Manager和Clou ...

  5. 如何解决cacti的snmp error

    第一,确定cacti所有的主机能ping通被监控主机:如果不能ping通,请确认网络配置和被监控主机的ip设置是否正确. 第二,如果能ping通,那么确认被监控主机是否启用snmpd服务: ps -e ...

  6. SO减单后MO分配给其他SO的问题修复

    逻辑:MO取进FP系统之前,首先判断是否带有SO号+SO行号,如果带有SO号+SO行号,则判断此SO号和SO行号是否存在订单表中,如果不存在则表示此MO对应的订单已减单,此MO需要做过滤,并展现在报表 ...

  7. js实现商品颜色尺码联动以及购买数量的选择

    <script type="text/javascript"> $(function(){ //初始化点击第一个颜色 jquery $("#colors a: ...

  8. php抓取股票数据

    public function stock(){ $curl = new Curl(); $curl->setUserAgent('Mozilla/5.0'); $curl->get('h ...

  9. 纯css3棋盘图案背景以及45度斜纹背景

    css代码  .stripes {     height: 250px;     width: 375px;     float: left;          margin: 10px;      ...

  10. 顺时针打印矩阵(python)

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...