Python之pymysql的学习总结
最近学习了pymysql的基本操作:增删改查,这里做一个封装。
1 import pymysql as ps 2 class MysqlHelper: 3 def __init__(self, host, user, password, database, charset): 4 self.host = host 5 self.user = user 6 self.password = password 7 self.database = database 8 self.charset = charset 9 self.db = None 10 self.curs = None 11 ''' 12 这里写的是MysqlHepler的构造函数,方便链接数据库,只要创建对象的时候把参数传入即可 13 host:连接的主机地址 14 user:你的MySql的用户一般是root 15 password:安装数据库时写的地址 16 database:你要操作的数据库的名字 17 charset:就是数据库的编码格式 18 ''' 19 20 def connect(self): 21 self.db = ps.connect(host=self.host, user=self.user, password=self.password, database=self.database,charset=self.charset) 22 #连接数据库 23 self.curs = self.db.cursor(ps.cursors.DictCursor)#查询时的返回值设置为字典的类型 24 25 def close(self): 26 self.curs.close() 27 self.db.close() 28 #关闭游标和数据库 29 30 def find(self, sql): 31 self.connect() #获取连接 32 try: 33 result = self.curs.execute(sql) #通过游标执行sql语句 34 fc = self.curs.fetchall() #拿到查询的所有结果 如果只要一条就写 :self.curs.fetchone() 35 print("Success") 36 return fc 37 except: 38 print('find error') 39 finally: 40 self.close() 41 42 def update(self, sql): #因为数据库 的增,删,改 不需要返回值,只要执行sql语句所以就写一个方法 43 self.connect() #获取连接 44 try: 45 count = self.curs.execute(sql) #通过游标执行sql语句 46 self.db.commit() #提交处理 47 print("Success") 48 return count 49 except: 50 print('update error') 51 self.db.rollback() #失败的话数据回滚 52 53 def update_by_params(self, sql, params): 54 self.connect() 55 try: 56 count = self.curs.execute(sql%params) #通过游标执行sql语句 ,处理SQL的拼接 57 self.db.commit() 58 print("ok") 59 return count 60 except: 61 print('update_by_params error') 62 self.db.rollback() 63 ''' 64 这里写的另一种格式的sql语句,为的是方便传变量进SQL语句中 65 update(self, sql)的sql写法是: 66 sql=insert into Student(Sname,Sid,Ssex,Sage) values('xiaoming','001',1,30) 67 update_by_params(self, sql, params)的sql写法是: 68 sql=insert into Student(Sname,Sid,Ssex,Sage) values('%s','%s',%d,%d) 69 update_by_params(sql,('xiaoming','001',1,30)) 70 '''
下面来运行一下看看效果:
首先我在数据库建立了一张表如图,其中id字段是自动增长的。
1.用update方法插入数据
from PyMySql.mySQLHelper import MysqlHelper #上面的是导入类 host='localhost' user='root' password='xxx'#这是你的密码 database='xxx'#这是你的数据库 charset='utf8' mh = MysqlHelper(host,user,password,database,charset) sql="insert into Student(Sname,Sid,Ssex,Sage) values('xiaoming','001',0,18)" mh.update(sql)
2.用update_by_params方法插入数据
1 mh = MysqlHelper(host,user,password,database,charset) 2 sql="insert into Student(Sname,Sid,Ssex,Sage) values('%s','%s',%d,%d)" 3 name='xiaowang' 4 id='002' 5 sex=1 6 age=18 7 mh.update_by_params(sql,(name,id,sex,age))
插入的效果:
类似的删和改都是一样的
3.查找数据
mh = MysqlHelper(host,user,password,database,charset) sql="select * from Student" data = mh.find(sql) print(data)
查找的效果:
返回的是字典,因为之前在游标处设置了
参考的资料:
http://www.runoob.com/python3/python3-mysql.html