教你怎么用Python操作MySql数据库


Posted in Python onMay 31, 2021

一、关于Python操作数据库的概述

Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。

DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。由于DB-API 为不同的数据库提供了一致的访问接口, 在不同的数据库之间移植代码成为一件轻松的事情。

在Python中如果要连接数据库,不管是MySQL、SQL Server、PostgreSQL亦或是SQLite,使用时都是采用游标的方式。

二、一般操作流程

教你怎么用Python操作MySql数据库

三、安装mysql的操作库

$ pip3 install PyMySQL

四、基本操作

创建连接

import pymysql

# 创建连接方式1
db = pymysql.connect(host='localhost', 
                     user='root', password='root', db='test', port=3306)
# 创建连接方式2
db = pymysql.connect(dsn='localhost:test', user='root', password='root')

close()

关闭此connect对象, 关闭后无法再进行操作,除非再次创建连接。

cursor()

创建游标对象。一个游标允许用户执行数据库命令和得到查询结果。一个 Python DB-API 游标对象总是扮演游标的角色, 无论数据库是否真正支持游标。也就说,数据库接口程序必须实现游标对象。创建游标对象之后, 你就可以执行查询或其它命令(或者多个查询和多个命令), 也可以从结果集中取出一条或多条记录。

commit()

提交当前事务,执行游标对象的所有更新操作。

rollback()

取消当前事务,回滚当前游标的所有操作。

游标操作

cursor = db.cursor()
  • close():关闭此游标对象
  • fetchone():得到结果集的下一行
  • fetchall():得到结果集中剩下的所有行
  • excute(sql[, args]):执行一个数据库查询或命令
  • callproc(func[,args]): 调用一个存储过程

查询操作

import pymysql

db = pymysql.connect(host='localhost', user='root', password='root', db='test')

cursor = db.cursor()
sql = '''select * from t_account'''
try:
    cursor.execute(sql)
    # 方式1读取结果集
    rows = cursor.fetchall()
    for row in rows:
        print(row)    
    # 方式2读取结果集
    for i in range(cursor.rowcount):
        result = cursor.fetchone()
        print(result)
except Exception as e:
    raise e
finally:
    cursor.close()

db.close()

添加操作

import pymysql

db = pymysql.connect(host='localhost', user='root', password='root', db='test')

cursor = db.cursor()
sql = '''insert into t_account values(default,'zhangsan','z',100,'张三')'''
try:
    print(cursor.execute(sql))
    db.commit()
except:
    db.rollback()
finally:
    cursor.close()

db.close()

修改操作

import pymysql

db = pymysql.connect(host='localhost', user='root', password='root', db='test')

cursor = db.cursor()
sql = '''update t_account set realname = '李四' where id = '5' '''
try:
    print(cursor.execute(sql))
    db.commit()
except:
    db.rollback()
finally:
    cursor.close()

db.close()

删除操作

import pymysql

db = pymysql.connect(host='localhost', user='root', password='root', db='test')

cursor = db.cursor()
sql = '''delete from t_account where id = '5' '''
try:
    print(cursor.execute(sql))
    db.commit()
except:
    db.rollback()
finally:
    cursor.close()

db.close()

调用存储过程

cursor.callproc("存储过程名称")
for result in cursor.fetchall():
    print(result)

到此这篇关于教你怎么用Python操作MySql数据库的文章就介绍到这了,更多相关Python操作MySql内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现的简单文本类游戏实例
Apr 28 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
python实现学生信息管理系统
Apr 05 Python
Python 读取指定文件夹下的所有图像方法
Apr 27 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
python使用matplotlib库生成随机漫步图
Aug 27 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
Python实现画图软件功能方法详解
Jul 28 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 Python
python process模块的使用简介
May 14 Python
Python多个MP4合成视频的实现方法
Jul 16 Python
Django集成富文本编辑器summernote的实现步骤
Python基础知识学习之类的继承
May 31 #Python
Django实现聊天机器人
Python趣味挑战之教你用pygame画进度条
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 #Python
解决pytorch读取自制数据集出现过的问题
Python爬虫基础初探selenium
You might like
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
script标签属性用type还是language
2015/01/21 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
详解Python 正则表达式模块
2018/11/05 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
Django配置跨域并开发测试接口
2020/11/04 Python
CSS3 简写animation
2012/05/10 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
解释下面关于J2EE的名词
2013/11/15 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
大学生村官事迹材料
2014/01/21 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
动员大会主持词
2014/03/20 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
篮球赛口号
2014/06/18 职场文书
个人年终总结范文
2015/03/09 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android