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

 

posted @ 2018-04-18 23:42  匿名道友  阅读(684)  评论(0编辑  收藏  举报