#import mysql.connector
import pymysql


#mydb = mysql.connector.connect(
#        host = "localhost",
#        user = "root",
#        passwd = "123456",
#        database = "mysql")
#        
#mycursor = mydb.cursor()
#mycursor.execute("show tables")
#for i in mycursor:
#    print(i)


class DB(object):
    
    def __init__(self, host="localhost", port=3306, db="", user="root", passwd="123456", charset="utf8"):
        
        # 创建数据库连接
        self.dbconn = pymysql.connect(host=host, port=port, db=db, user=user, passwd=passwd, charset=charset)
        
        # 创建字典型游标(返回的数据是字典类型)
        self.dbcur = self.dbconn.cursor(cursor = pymysql.cursors.DictCursor)
        
    # __enter__() 和 __exit__() 是with关键字调用的必须方法
    # with本质上就是调用对象的enter和exit方法
    def __enter__(self):
        
        # 返回游标
        return self.dbcur
    
    def __exit__(self, exc_type, exc_value, exc_trace):
        
        # 提交事务
        self.dbconn.commit()
        
        # 关闭游标
        self.dbcur.close()
        
        # 关闭数据库连接
        self.dbconn.close()


if __name__ == "__main__":
    with DB(db="test") as db:
#        db.execute("show databases")
        db.execute("select count(*) from test1")
        print(db)
        for i in db:
            print(i)

 

posted on 2019-10-08 16:10  周围圆  阅读(2825)  评论(0编辑  收藏  举报