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使用PyV8执行javascript代码示例分享
Dec 04 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
Python连接phoenix的方法示例
Sep 29 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
python 动态迁移solr数据过程解析
Sep 04 Python
用Python绘制漫步图实例讲解
Feb 26 Python
详解Python调用系统命令的六种方法
Jan 28 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 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
PHP分页类集锦
2014/11/18 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
Python3遍历目录树实现方法
2015/05/22 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Python中查看文件名和文件路径
2017/03/31 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
python3爬虫怎样构建请求header
2018/12/23 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Django获取应用下的所有models的例子
2019/08/30 Python
python django生成迁移文件的实例
2019/08/31 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
临床医学专业毕业生的自我评价
2013/10/17 职场文书
销售队伍口号
2014/06/11 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
让世界充满爱观后感
2015/06/10 职场文书
三好学生竞选稿
2015/11/21 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js