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