python3使用pymysql模块,连接mysql数据库,实现新增、查询和更新操作
1、环境数据准备:
python3环境、pymysql模块
mysql数据库:本次代码中用到的数据库为本地的testdb数据库,user表(表字段比较简单,只有主键id,手机号mobile,密码passwd)
2、本次代码直接封装为类,代码中附有注释,把数据库参数改为自己实际的就可以直接使用
1 #引入pymysql模块 2 import pymysql 3 4 class DoMysql: 5 #初始化 6 def __init__(self): 7 #创建连接 8 self.conn = pymysql.Connect( 9 host = 'localhost', 10 port = 3306, 11 user = 'root', 12 password = 'root', 13 db = 'testdb', 14 charset = 'utf8', 15 cursorclass = pymysql.cursors.DictCursor #以字典的形式返回数据 16 ) 17 #获取游标 18 self.cursor = self.conn.cursor() 19 20 #返回多条数据 21 def fetchAll(self,sql): 22 self.cursor.execute(sql) 23 return self.cursor.fetchall() 24 25 #插入一条数据 26 def insert_one(self,sql): 27 result = self.cursor.execute(sql) 28 self.conn.commit() 29 return result 30 31 #插入多条数据 32 def insert_many(self,sql,datas): 33 result = self.cursor.executemany(sql,datas) 34 self.conn.commit() 35 return result 36 37 #更新数据 38 def update(self,sql): 39 result = self.cursor.execute(sql) 40 self.conn.commit() 41 return result 42 43 #关闭连接 44 def close(self): 45 self.cursor.close() 46 self.conn.close() 47 48 49 50 51 if __name__ == '__main__': 52 mysql = DoMysql() 53 #插入一条数据 54 sql = 'insert into `user`(`mobile`,`passwd`) values("13100010000","123456")' 55 result = mysql.insert_one(sql) 56 print(result) #返回插入数据的条数(1) 57 58 #插入多条数据 59 datas = [ 60 ("13100010001","111111"), 61 ("13100010002","666666") 62 ] 63 sql = 'insert into `user`(`mobile`,`passwd`) values(%s,%s)' 64 result = mysql.insert_many(sql,datas) 65 print(result) #返回插入数据的条数(2) 66 67 #查询数据 68 sql = 'select * from user' 69 result = mysql.fetchAll(sql) #返回列表,如果多条数据,列表中嵌套字典 70 for item in result: 71 print(item.get('mobile')) #循环列表,输出mobile值 72 73 #关闭连接 74 mysql.close()
3、扩展信息
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象