python入门之mysql数据库知识汇总:Python学习Python使用PyMySQL连接MySQL数据库
python入门之mysql数据库知识汇总:Python学习Python使用PyMySQL连接MySQL数据库execute(op) 执行一个数据库的查询命令 fetchone() 取得结果集的下一行 fetchmany(size) 获取结果集的下几行 fetchall() 获取结果集中的所有行 rowcount() 返回数据条数或影响行数 close() 关闭游标对象 创建测试用表:cursor() 使用该连接创建并返回游标 commit() 提交当前事务 rollback() 回滚当前事务 close() 关闭连接 cursor对象支持的方法pip3 install PyMySQL Python中使用PyMysql导入方法:import pymysql pymysql.Connect()参数说明host(str): MySQL服务器地址 port(int): MySQL服务器端口号 user(str): 用户名 passwd(str): 密码 db(str): 数据库名称 chars
什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMysql 下载地址:https://github.com/PyMySQL/PyMySQL。下载后:
cd PyMySQL/ python3 setup.py install
也可以使用pip方式安装:
pip3 install PyMySQL
Python中使用PyMysql导入方法:
import pymysql
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() 关闭游标对象
创建测试用表:
-- 存在则先drop DROP TABLE IF EXISTS `TEST_TRADE`; -- 创建表 CREATE TABLE `TEST_TRADE` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT `name` varchar(6) NOT NULL COMMENT '网站名字' `url` varchar(20) NOT NULL COMMENT '网站地址' PRIMARY KEY (`id`) UNIQUE KEY `name_UNIQUE` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; -- 插入测试数据 INSERT INTO `TEST_TRADE` VALUES (1 '头条' 'https://www.toutiao.com/c/user/2766012558613863/#mid=1632685699786766');
使用Python实现增删改查和事务处理,如下:
import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host='192.168.1.19' port=3306 user='root' passwd='123456' db='test2' charset='utf8' ) # 获取游标 cursor = connect.cursor() # 插入数据 sql = "INSERT INTO TEST_TRADE (name url) VALUES ( '%s' '%s')" data = ('领优惠券' 'http://1668s.com') cursor.execute(sql % data) connect.commit() print('成功插入' cursor.rowcount '条数据') # 修改数据 sql = "UPDATE TEST_TRADE SET url = \'%s\' and name=\'%s\' WHERE id = '%s' " data = ('http://hi-laoz.com' '老曾的博客' 3) cursor.execute(sql % data) connect.commit() print('成功修改' cursor.rowcount '条数据') # 查询数据 sql = "SELECT name url FROM TEST_TRADE WHERE name = '%s' " data = ('老曾的博客' ) cursor.execute(sql % data) for row in cursor.fetchall(): print("Name:%s\turl:%s" % row) print('共查找出' cursor.rowcount '条数据') # 删除数据 sql = "DELETE FROM TEST_TRADE WHERE name = '%s' LIMIT %d" data = ('领优惠券' 1) cursor.execute(sql % data) connect.commit() print('成功删除' cursor.rowcount '条数据') # 事务处理 sql_1 = "UPDATE TEST_TRADE SET url = 'http://1668s.com' WHERE name = '优惠券' " sql_2 = "DELETE FROM TEST_TRADE WHERE name = '老曾的博客' LIMIT 1" sql_3 = "INSERT INTO TEST_TRADE (name url) VALUES ( '老曾的博客' 'http://1668s.com') " sql_4 = "UPDATE TEST_TRADE SET url= 'http://hi-laoz.com' WHERE name = '老曾的博客' " try: cursor.execute(sql_1) cursor.execute(sql_2) cursor.execute(sql_3) cursor.execute(sql_4) except Exception as e: connect.rollback() # 事务回滚 print('事务处理失败' e) else: connect.commit() # 事务提交 print('事务处理成功' cursor.rowcount) # 关闭连接 cursor.close() connect.close()
检查数据SQL
select * from `TEST_TRADE`