教你怎么用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发送SMTP邮件的教程
Apr 29 Python
python实现的DES加密算法和3DES加密算法实例
Jun 03 Python
python实现线程池的方法
Jun 30 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
Python变量赋值的秘密分享
Apr 03 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
flask session组件的使用示例
Dec 25 Python
python实现超市商品销售管理系统
Oct 25 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
python中for in的用法详解
Apr 17 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 Python
Django集成富文本编辑器summernote的实现步骤
Python基础知识学习之类的继承
May 31 #Python
Django实现聊天机器人
Python趣味挑战之教你用pygame画进度条
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 #Python
解决pytorch读取自制数据集出现过的问题
Python爬虫基础初探selenium
You might like
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
深入php之规范编程命名小结
2013/05/15 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
React实现全选功能
2020/08/25 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
Python高斯消除矩阵
2019/01/02 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
什么时候需要进行强制类型转换
2016/09/03 面试题
医务工作者先进事迹材料
2014/01/26 职场文书
运动会入场词100字
2014/02/06 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
优秀应届生求职信
2014/06/16 职场文书
2014年电工工作总结
2014/11/20 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
2015年后备干部工作总结
2015/05/15 职场文书