教你怎么用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制作花瓣网美女图片爬虫
Oct 28 Python
python和ruby,我选谁?
Sep 13 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Django中的forms组件实例详解
Nov 08 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
Python request使用方法及问题总结
Apr 26 Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
教你怎么用Python处理excel实现自动化办公
Apr 30 Python
Django集成富文本编辑器summernote的实现步骤
Python基础知识学习之类的继承
May 31 #Python
Django实现聊天机器人
Python趣味挑战之教你用pygame画进度条
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 #Python
解决pytorch读取自制数据集出现过的问题
Python爬虫基础初探selenium
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP新手上路(十)
2006/10/09 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
利用Python如何生成hash值示例详解
2017/12/20 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
python实现五子棋程序
2020/04/24 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
如何现实servlet的单线程模式
2014/08/05 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
论文答谢词
2015/01/20 职场文书
Python音乐爬虫完美绕过反爬
2021/08/30 Python
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android