签到成功

知道了

CNDBA社区CNDBA社区

Python 封装 MySQL 数据库操作(使用类封装基本的增删改查)

2017-08-25 12:04 6871 0 原创 Python MySQL
作者: dave

上篇看了SQLite 数据库的封装,这篇看下MySQL的封装.http://www.cndba.cn/dave/article/2171http://www.cndba.cn/dave/article/2171

Python 封装 SQLite 数据库操作(使用类封装基本的增删改查)

http://www.cndba.cn/dave/article/2171
http://www.cndba.cn/dave/article/2171

http://www.cndba.cn/dave/article/2171
http://www.cndba.cn/dave/article/2171http://www.cndba.cn/dave/article/2171

http://www.cndba.cn/dave/article/2154

http://www.cndba.cn/dave/article/2171
http://www.cndba.cn/dave/article/2171http://www.cndba.cn/dave/article/2171


# -*- coding: utf-8 -*-
import pymysql

class MysqlClass:

    SHOW_SQL = False
    def __init__(self, host='127.0.0.1', port=3306, user='root', password='http://www.cndba.cn/dave', db='cndba', charset='utf8'):
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.db = db
        self.charset = charset

    # 建立连接
    def get_con(self):
        try:  
            conn = pymysql.connect(host=self.host, user=self.user, passwd=self.password, db=self.db, port=self.port, charset=self.charset)
            return conn  
        except pymysql.Error, e:
            print "pymysql Error:%s" % e

    # 查询方法,使用con.cursor(MySQLdb.cursors.DictCursor),返回结果为字典
    def select_all(self, sql):
        try:  
            con = self.get_con()
            print con  
            cur = con.cursor(pymysql.cursors.DictCursor)
            count = cur.execute(sql)
            fc = cur.fetchall()
            return fc  
        except pymysql.Error, e:
            print "pymysql Error:%s" % e
        finally:  
            cur.close()  
            con.close()

    def select_by_where(self, sql, data):
        try:
            con = self.get_con()
            # print con
            d = (data,)
            cur = con.cursor(pymysql.cursors.DictCursor)
            count = cur.execute(sql, d)
            fc = cur.fetchall()
            # if len(fc) > 0:
            #     for e in range(len(fc)):
            #         print(fc[e])
            return fc
        except pymysql.Error, e:
            print "pymysql Error:%s" % e
        finally:
            cur.close()
            con.close()

    # 带参数的更新方法,eg:sql='insert into pythontest values(%s,%s,%s,now()',params=(6,'C#','good book')
    def dml_by_where(self, sql, params):
        try:  
            con = self.get_con()
            cur = con.cursor()

            for d in params:
                if self.SHOW_SQL:
                    print('执行sql:[{}],参数:[{}]'.format(sql, d))
                cur.execute(sql, d)
            con.commit()

        except pymysql.Error, e:
            con.rollback()  
            print "pymysql Error:%s" % e
        finally:  
            cur.close()  
            con.close()

    # 不带参数的更新方法
    def dml_nowhere(self, sql):
        try:  
            con = self.get_con()
            cur = con.cursor()
            count = cur.execute(sql)
            con.commit()  
            return count  
        except pymysql.Error,e:
            con.rollback()  
            print "pymysql Error:%s" % e
        finally:  
            cur.close()  
            con.close()  

# 开始测试函数


def select_all():
    sql = "select * from dave"
    fc = db.select_all(sql)
    for row in fc:
        print row['id'], row['url']

def select_by_where():
    sql = "select * from dave where id=%s"
    data = [1]
    fc = db.select_by_where(sql, data)

    for row in fc:
        print row['id'], row['url']

def ins_by_param():
    sql = "insert into dave values(%s,%s)"
    data = [(1, 'http://www.cndba.cn'), (2, 'http://www.cndba.cn/dave')]
    db.dml_by_where(sql, data)


def del_by_where():
    sql = "delete from dave where id=%s"
    data = [1, 2]
    db.dml_by_where(sql, data)


def update_by_where():
    sql = "update dave set url=%s where id=%s"
    data = [('http://www.zhixintech.cc', 2)]
    db.dml_by_where(sql, data)


def del_nowhere():
    sql = "delete from dave"
    print db.dml_nowhere(sql)


if __name__ == "__main__":  
    db = MysqlClass( '192.168.1.4', port=3306, user='root', password='http://www.cndba.cn/dave', db='cndba', charset='utf8')

    # ins_by_param()
    # del_by_where()
    # update_by_where()
    del_nowhere()
    select_all()
    # select_by_where()


版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2261
    原创
  • 3
    翻译
  • 578
    转载
  • 191
    评论
  • 访问:8030039次
  • 积分:4346
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ