一、創建數據庫實例
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()