import pymysql
'''
簡化mysql 的數據庫的操作封裝成類調用
主要一個類的實例為一個數據庫的連接,
處理這個流程
優化封裝成靜態方法調用避免多次連接數據庫造成連接資源浪費
'''
class mysqlDB(object):
def __init__(self, host, user, passwd, db, port=3306, charset='utf8'):
self.host = host
self.port = port
self.db = db
self.user = user
self.passwd = passwd
self.charset = charset
self.connection()
# 創建一個連接
def connection(self):
try:
self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db,
charset=self.charset)
self.cur = self.conn.cursor()
except pymysql.Error as e:
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 關閉連接
def closeconn(self):
self.cur.close()
self.conn.close()
# 查詢一條數據
def getOneData(self, sql):
try:
self.cur.execute(sql)
return self.cur.fetchone()
except pymysql.Error as e:
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 查詢多條數據
def getAllData(self, sql):
try:
self.cur.execute(sql)
return self.cur.fetchall()
except pymysql.Error as e:
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 添加/刪除/修改
def crud(self, sql):
try:
n = self.cur.execute(sql)
self.conn.commit()
return n
except pymysql.Error as e:
self.conn.rollback()
self.Error = str(e.args[0]) + str(e.args[1])
raise
# 批量插入
def execMany(self, sql, vals):
try:
n = self.cur.executemany(sql, vals)
print(n)
self.conn.commit()
except pymysql.Error as e:
self.conn.rollback()
self.Error = str(e.args[0]) + str(e.args[1])
raise
class mysqlTB(object):
def __init__(self, db):
self.db = db
def getAllData(self, sql):
self.db.connection()
data = self.db.getAllData(sql)
self.db.closeconn()
return data
def crud(self,sql):
self.db.connection()
try:
self.db.crud(sql)
except Exception as e:
print('插入數據報錯!', str(e))
finally:
self.db.closeconn()
if __name__ == '__main__':
# ['211', '李四'],
# ['311', '王五']
# insert_data = [[311, '王五']]
try:
mydb = MysqlDB('180.103.66.133', 'root', 'Dg#D21bT$s', 'daguan_fileconvert')
# sql = "select * from test "
# res = mydb.getAllData(sql)
# print(res)
# for item in res:
# print("name:%s,age:%s" % (item[0], item[1]))
# print('------------第二次喲------------')
# mydb.crud("insert into test(id,address) value ('%d','%s')" % (12,'LOKing'))
insert_data = [
[98, '張三1'],
[100, '李四1'],
[27, '王五1']
]
sql = "INSERT INTO test(age,address) VALUES (%s,%s)"
# print('insert_data:',insert_data)
mydb.execMany(sql, insert_data)
# sql = 'INSERT INTO test(age, address) VALUES (%d, %s)'
# mydb.execMany(sql, insert_dat
# # for item in res:a)
# print("name:%s,age:%s" % (item[0], item[1]))
except Exception:
print("出錯啦:" + mydb.Error)
finally:
mydb.closeconn()
pymysql類
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 前情回顧 上一篇文章已經寫好了查詢數據庫以及post請求API的實例,那么本章節我們來繼續。 實戰任務 本次因為服...
- 公司以前用的 django 的 orm ,后來為了解耦,想著改用mysql存數據,好久沒用過了。踩到的坑,大家可以...
- conn = pymysql.connect(use_unicode=True, charset='utf8', ...