import pymysql
# username : adil
# password : helloyyj
class DataBaseHandle(object):
''' 定義一個 MySQL 操作類'''
def __init__(self, host, username, password, database, port):
'''初始化數據庫信息並創建數據庫連接'''
# 下面的賦值其實可以省略,connect 時 直接使用形參即可
self.host = host
self.username = username
self.password = password
self.database = database
self.port = port
self.db = pymysql.connect(
host=self.host,
user=self.username,
password=self.password,
db=self.database,
port=self.port,
charset="utf8"
)
self.cursor = self.db.cursor(pymysql.cursors.DictCursor)
def insertDB(self, sql):
''' 插入數據庫操作 '''
try:
# 執行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 插入數據 條數 可以根據 返回值 判定處理結果
# print(tt)
self.db.commit()
# query = 'insert into 表名(列名1, 列名2, 列名3, 列名4, 列名5, 列名6) values(%s, %s, %s, %s, %s, %s)'
# self.cursor.execute(sql)
except Exception as e:
print('回滾')
print(e)
# 發生錯誤時回滾
self.db.rollback()
return e
finally:
self.cursor.close()
def deleteDB(self, sql):
''' 操作數據庫數據刪除 '''
# print('刪除')
try:
# 執行sql
print('刪除')
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 刪除數據 條數 可以根據 返回值 判定處理結果
# print(tt)
self.db.commit()
except:
print('回滾')
# 發生錯誤時回滾
self.db.rollback()
finally:
self.cursor.close()
def updateDb(self, sql):
''' 更新數據庫操作 '''
try:
# 執行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 更新數據 條數 可以根據 返回值 判定處理結果
# print(tt)
self.db.commit()
except:
# 發生錯誤時回滾
self.db.rollback()
finally:
self.cursor.close()
def selectDb(self, sql):
''' 數據庫查詢 '''
try:
self.cursor.execute(sql) # 返回 查詢數據 條數 可以根據 返回值 判定處理結果
data = self.cursor.fetchall() # 返回所有記錄列表
print(data)
# 結果遍歷
except:
print('Error: unable to fecth data')
finally:
self.cursor.close()
def closeDb(self):
''' 數據庫連接關閉 '''
self.db.close()
if __name__ == '__main__':
DbHandle = DataBaseHandle('localhost', 'root', 'root', 'test01', 3306)
DbHandle.insertDB("insert into author (name) values ('隨便起名')")
# DbHandle.deleteDB("delete from abc where id=2")
# DbHandle.selectDb("select * from goods where id = 3")
DbHandle.closeDb()