一、创建数据库实例
1 from pymysql import * 2 # 创建数据库实例 3 #1.建立数据库连接 4 conn = connect(host="192.168.20.101",user="root",password="123456") 5 # 2.获取游标对象 6 mycur = conn.cursor() 7 #3.执行创建数据库实例,并返回int类型结果 1表示添加成功,如果数据库实例已经存在则抛出异常 8 try: 9 result = mycur.execute("create database pydb") 10 print("添加数据库实例后返回的结果:",result) 11 except ProgrammingError as msg: 12 print("添加数据库实例出现异常:",msg) 13 finally: 14 #4.关闭游标 15 mycur.close() 16 # 5.关闭连接 17 conn.close()
二、创建表
1 from pymysql import * 2 # 1. 创建数据库连接对象 3 conn = connect(host="192.168.20.101", user="root", password="123456",database="pydb") 4 # 2.从连接对象上获取游标 5 mycur = conn.cursor() 6 # 3.执行创建数据库的表tb_user,返回int类型的结果 成功添加表的话,返回0 ;添加失败抛出异常 7 try: 8 result = mycur.execute(""" 9 CREATE TABLE `tb_user` ( 10 `id` bigint(20) NOT NULL AUTO_INCREMENT, 11 `username` varchar(50) NOT NULL COMMENT '用户名', 12 `password` varchar(32) NOT NULL COMMENT '密码,加密存储', 13 `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号', 14 `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱', 15 `created` datetime NOT NULL, 16 `updated` datetime NOT NULL, 17 PRIMARY KEY (`id`), 18 UNIQUE KEY `username` (`username`) USING BTREE, 19 UNIQUE KEY `phone` (`phone`) USING BTREE, 20 UNIQUE KEY `email` (`email`) USING BTREE 21 ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COMMENT='用户表' 22 """) 23 print("返回结果:%d"%result) 24 except (InternalError,ProgrammingError) as msg: 25 print("表添加出现异常,异常信息:%s"%msg) 26 finally: 27 # 4关闭游标 28 mycur.close() 29 # 5 关闭连接 30 conn.close()
三、向表中插入数据
1 from pymysql import * 2 # 1.建立到数据库连接 3 conn = connect(host="192.168.20.101",user="root",password="123456",database="pydb") 4 # 2.获取游标 5 mycur = conn.cursor() 6 try: 7 # 3.开启事务 8 conn.begin() 9 # 4.执行插入数据,并返回影响的行数 10 rowNum1 = mycur.execute("""insert into `tb_user` values(1,'lisi','e10adc3949ba59abbe56e057f20f883e','13412345678','jinxf101@126.com','2020-12-25 17:03:55','2020-12-25 17:03:55');""") 11 # 防止sql注入的风险,通过%s占位符, 12 rowNum2 = mycur.execute("""insert into `tb_user` values(%s,%s,%s,%s,%s,%s,%s);""", 13 (2,'wangwu','202cb962ac59075b964b07152d234b70','13412345679','jinxf102@126.com','2020-12-26 17:03:55','2020-12-26 17:03:55')) 14 # 在表名后添加列名 15 rowNum3 = mycur.execute("""insert into tb_user(username,password,phone,email,created,updated) values(%s,%s,%s,%s,%s,%s);""", 16 ('zhaoliu','e10adc3949ba59abbe56e057f20f883e','13412345675','jinxf103@126.com','2020-12-27 17:03:55','2020-12-27 17:03:55')) 17 row = rowNum1+rowNum2+rowNum3 18 print("受影响的行数:",row) 19 if row==3: 20 #提交事务 21 conn.commit() 22 else: 23 # 回滚事务 24 conn.rollback() 25 except IntegrityError as msg: 26 print("出现异常",msg) 27 # 回滚事务 28 conn.rollback() 29 finally: 30 # 关闭游标 31 mycur.close() 32 # 关闭连接 33 conn.close()
四、查询表中数据
1 from pymysql import * 2 # 建立连接 3 conn = connect(host="192.168.20.101",user="root",password="123456",database="pydb") 4 # 获取游标 5 mycur = conn.cursor() 6 # 执行查询,并返回查询出来的数据的总行数 7 rowNum = mycur.execute("select * from tb_user") 8 print("共查询出 %d 行数据"%rowNum) 9 # 获取查询出来的数据 10 results = mycur.fetchall() 11 print(type(results)) 12 #遍历输出 13 for result in results: 14 # print(result) 15 print(result[0],result[1]) 16 17 #关闭游标和连接 18 mycur.close() 19 conn.close()
五、修改表中数据
1 from pymysql import * 2 conn = connect(host="192.168.20.101",user="root",password="123456",database="pydb") 3 mycur = conn.cursor() 4 try: 5 conn.begin() 6 row = mycur.execute("update tb_user set username=%s,phone=%s,email=%s,updated=%s where id = %s", 7 ('zhaomin','13888889999','zhaomin@126.com','2021-01-29 20:16:20',37)) 8 # 提交事务 9 conn.commit() 10 if row ==1: 11 print("修改成功") 12 else: 13 print("修改失败") 14 except Exception as msg: 15 #回滚事务 16 conn.rollback() 17 print("修改失败,提示信息:",msg) 18 finally: 19 # 关闭游标 20 mycur.close() 21 # 关闭数据库连接 22 conn.close()
六、删除表中数据
1 from pymysql import * 2 # 建立数据库连接 3 conn = connect(host="192.168.20.101",user="root",password="123456",database="pydb") 4 # 获取游标 5 mycur = conn.cursor() 6 try: 7 # 开启事务 8 conn.begin() 9 # 执行删除数据 10 rowNum = mycur.execute("delete from tb_user where id = %s",(37,)) 11 print("受影响的行数:",rowNum) 12 conn.commit() 13 except Exception as msg: 14 print("删除抛出异常,提示信息:",msg) 15 conn.rollback()#回滚事务 16 finally: 17 # 关闭游标和数据库连接 18 mycur.close() 19 conn.close()