1. 程式人生 > >pymysql 學習筆記

pymysql 學習筆記

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pymysql
import chardet

class DBPymysql():
"""pymysql模組連結操作資料庫"""
def __init__(self,ip='localhost',port=3306,dbname='test',user='root',password='123456',charset='utf8'):
"""初始化charset='utf8'"""
self.ip = ip
self.port = port
self.dbname = dbname
self.user = user
self.psw = password
self.charset = charset


def insertOperate(self):
"""資料庫插入操作"""
# 建立連結
conn = pymysql.connect(host=self.ip,port=self.port,user=self.user,password=self.psw,database=self.dbname,charset=self.charset)
# conn = pymysql.connect(host=self.ip,port=int(self.port),user=self.user,password=self.psw,database=self.dbname,charset=self.charset)
try:
# 遊標
cursor = conn.cursor()
cursor.execute("set names 'utf8'")
#cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #配置結果集為字典形式
sql='insert into test (id,name) values (%s,%s)'
name = "李四".encode('utf8')
print(chardet.detect(name))
res=cursor.execute(sql,('6',name))
print(res)
conn.commit()
except:
print("資料插入異常")
pass
finally:
cursor.close() # 關閉遊標
conn.close() # 關閉連結
# return res

def queryOperate(self):
"""資料庫查詢操作queryInfo"""
# 建立連結
conn = pymysql.connect(host=self.ip,port=self.port,user=self.user,password=self.psw,database=self.dbname,charset=self.charset)
res = ""
try:
# 遊標
cursor = conn.cursor() #預設結果集為元組形式
# cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #配置結果集為字典形式
# sql="select * from user where id=%s and name=%s" #!!!注意%s需要去掉引號,因為pymysql會自動為我們加上
sql="select * from test"
# sql="select * from user where id=%s and name=%s"
# id = "10"
# name = "hahaa"
# res1=cursor.execute(sql,[id,name]) #pymysql模組自動幫我們解決sql注入的問題,只要我們按照pymysql的規矩來。
res1=cursor.execute(sql)
# res = cursor.fetchone()
# res2=cursor.fetchone() #會接著上一次的查詢記錄結果繼續往下查詢
# res3=cursor.fetchone()
# res4=cursor.fetchmany(2) #查詢兩條記錄會以元組套小元組的形式進行展示
res5=cursor.fetchall()
except:
print("資料插入異常")
pass
finally:
cursor.close() # 關閉遊標
conn.close() # 關閉連結
return res5


def updateOperate(self):
"""資料庫更新操作"""
# 建立連結
conn = pymysql.connect(host=self.ip,port=self.port,user=self.user,password=self.psw,database=self.dbname,charset=self.charset)
# conn = pymysql.connect(host=self.ip,port=int(self.port),user=self.user,password=self.psw,database=self.dbname,charset=self.charset)
try:
# 遊標
cursor = conn.cursor()
#cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #配置結果集為字典形式
sql='update user set name=%s where id=%s'
name = "李四".encode('utf-8')
res=cursor.execute(sql,[name,"13"])
print(res)
conn.commit()
except:
print("更新資料異常")
pass
finally:
cursor.close() # 關閉遊標
conn.close() # 關閉連結


def deleteOperate(self):
"""資料庫刪除操作"""
# 建立連結
conn = pymysql.connect(host=self.ip,port=self.port,user=self.user,password=self.psw,database=self.dbname,charset=self.charset)
# conn = pymysql.connect(host=self.ip,port=int(self.port),user=self.user,password=self.psw,database=self.dbname,charset=self.charset)
try:
# 遊標
cursor = conn.cursor()
#cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #配置結果集為字典形式
sql='delete from user where id = %s'
res=cursor.execute(sql,["12"])
conn.commit()
except:
print("刪除資料異常")
pass
finally:
cursor.close() # 關閉遊標
conn.close() # 關閉連結



if __name__ == '__main__':
dbp = DBPymysql(ip="localhost",port=3306,dbname="test1",user="root",password="******",charset='utf8')
dbp.insertOperate()
res = dbp.queryOperate()
print(res)
# dbp.updateOperate()
# dbp.deleteOperate()
# name = "李四".encode('utf-8')
# mychar = chardet.detect(name)
# bianma = mychar['encoding']
# print(bianma)