【20】python之操作MySQL数据库
一、连接库安装
Python2.x:MySQLdb
Python3.x :pymysql
二、接口信息
#创建数据库连接 pymysql.Connect()参数说明 host(str): MySQL服务器地址 port(int): MySQL服务器端口号 user(str): 用户名 passwd(str): 密码 db(str): 数据库名称 charset(str): 连接编码,存在中文的时候,连接需要添加charset='utf8',否则中文显示乱码。 connection对象支持的方法 cursor() 使用该连接创建并返回游标 commit() 提交当前事务,不然无法保存新建或者修改的数据 rollback() 回滚当前事务 close() 关闭连接 cursor对象支持的方法 execute(op) 执行SQL,并返回受影响行数 fetchone() 取得结果集的下一行 fetchmany(size) 获取结果集的下几行 fetchall() 获取结果集中的所有行 rowcount() 返回数据条数或影响行数 close() 关闭游标对象
三、数据库准备
MySQL数据库安装详见https://www.cnblogs.com/dangjf/p/13570602.html
1、创建数据库
2、创建测试表
四、数据库操作
1、连接数据库
import pymysql # 连接数据库 connect = pymysql.Connect( host='localhost', port=3306, user='root', passwd='root', db='pytest', charset='utf8' ) # 获取游标 cursor = connect.cursor()
2、查询数据
# 查询数据 sql = "SELECT name,saving FROM trade WHERE account = '%s' " data = ('13512345678',) cursor.execute(sql % data) for row in cursor.fetchall(): print("Name:%s\tSaving:%.2f" % row) print('共查找出', cursor.rowcount, '条数据')
3、插入数据
插入一条数据
# 插入数据 sql = "INSERT INTO trade (name, account, saving) VALUES ( '%s', '%s', %.2f )" data = ('雷军', '13512345678', 10000) cursor.execute(sql % data) connect.commit() print('成功插入', cursor.rowcount, '条数据')
插入多条数据
# 插入数据 sql2 = "INSERT INTO team (v1,v2,v3) VALUES ( %s,%s,%s )"#%s没有引号 data = (('1','1','1'),('2','2','2')) cursor.executemany(sql2, data)#注意使用executemany connect.commit() print('成功插入', cursor.rowcount, '条数据')
4、删除数据
sql = "DELETE FROM trade WHERE account = '%s' LIMIT %d" data = ('13512345678', 1) cursor.execute(sql % data) connect.commit() print('成功删除', cursor.rowcount, '条数据')
5、修改数据
# 事务处理 sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = '18012345678' " sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = '18012345678' " sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = '18012345678' " try: cursor.execute(sql_1) # 储蓄增加1000 cursor.execute(sql_2) # 支出增加1000 cursor.execute(sql_3) # 收入增加2000 except Exception as e: connect.rollback() # 事务回滚 print('事务处理失败', e) else: connect.commit() # 事务提交 print('事务处理成功', cursor.rowcount)
6、清空数据
# 清空数据 sql = "truncate table team" cursor.execute(sql) connect.commit() print('成功清空')
7、关闭连接
# 关闭连接 cursor.close() connect.close()