Python 3.x 连接数据库示例(pymysql 方式)


Posted in Python onJanuary 19, 2017

由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块。

pymysql 模块可以通过 pip 安装。但如果你使用的是 pycharm IDE,则可以使用 project python 安装第三方模块。

[File] >> [settings] >> [Project: python] >> [Project Interpreter] >> [Install按钮]

Python 3.x 连接数据库示例(pymysql 方式)

由于Python统一了数据库连接的接口,所以 pymysql 和 MySQLdb 在使用方式上是类似的:

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()         关闭游标对象

==================MySQL===================

首先在连接数据库之前,先创建一个交易表,方便测试 pymysql 的功能:

DROP TABLE IF EXISTS `trade`;

CREATE TABLE `trade` (
 `id` int(4) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(6) NOT NULL COMMENT '用户真实姓名',
 `account` varchar(11) NOT NULL COMMENT '银行储蓄账号',
 `saving` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户储蓄金额',
 `expend` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户支出总计',
 `income` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户收入总计',
 PRIMARY KEY (`id`),
 UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `trade` VALUES (1,'乔布斯','18012345678',0.00,0.00,0.00);

==================Python===================

使用Python脚本实现增删改查和事务处理,源码如下:

import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
  host='localhost',
  port=3310,
  user='woider',
  passwd='3243',
  db='python',
  charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 插入数据
sql = "INSERT INTO trade (name, account, saving) VALUES ( '%s', '%s', %.2f )"
data = ('雷军', '13512345678', 10000)
cursor.execute(sql % data)
connect.commit()
print('成功插入', cursor.rowcount, '条数据')

# 修改数据
sql = "UPDATE trade SET saving = %.2f WHERE account = '%s' "
data = (8888, '13512345678')
cursor.execute(sql % data)
connect.commit()
print('成功修改', cursor.rowcount, '条数据')

# 查询数据
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, '条数据')

# 删除数据
sql = "DELETE FROM trade WHERE account = '%s' LIMIT %d"
data = ('13512345678', 1)
cursor.execute(sql % data)
connect.commit()
print('成功删除', cursor.rowcount, '条数据')

# 事务处理
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)

# 关闭连接
cursor.close()
connect.close()

==================测试结果===================

Python 3.x 连接数据库示例(pymysql 方式)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中for循环详解
Jan 17 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
python与php实现分割文件代码
Mar 06 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
python路径的写法及目录的获取方式
Dec 26 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
python 深度学习中的4种激活函数
Sep 18 Python
python开发制作好看的时钟效果
May 02 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 #Python
一步步教你用Python实现2048小游戏
Jan 19 #Python
python 开发的三种运行模式详细介绍
Jan 18 #Python
Python 3中的yield from语法详解
Jan 18 #Python
Python中的字符串操作和编码Unicode详解
Jan 18 #Python
关于Python中异常(Exception)的汇总
Jan 18 #Python
python:socket传输大文件示例
Jan 18 #Python
You might like
yii框架源码分析之创建controller代码
2011/06/28 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
Python中对象的引用与复制代码示例
2017/12/04 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
python中树与树的表示知识点总结
2019/09/14 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
python进行参数传递的方法
2020/05/12 Python
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
跟单文员的岗位职责
2013/11/14 职场文书
销售业务员岗位职责
2014/01/29 职场文书
房产公证委托书范本
2014/09/20 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
个人整改方案范文
2014/10/25 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书