Python入门—— MySQL-python模块

2023-11-20

MySQL-python模块

  • MySQLdb
    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。
    可以访问Python数据库接口及API查看详细的支持数据库列表。
    不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。
    DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。
    Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
    Python DB-API使用流程:
    • 引入 API 模块。
    • 获取与数据库的连接。
    • 执行SQL语句和存储过程。
    • 关闭数据库连接。
  • MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

1 进行MySQLdb 模块的安装(linux下)

  • 要进行MySQLdb 模块的安装,首先要确保你的电脑中有如下应用
    • Mysql 数据库(mariadb-server)
    • gcc(GNU Compiler Collection,GNU编译器套件)
    • ipython 一个交互式计算系统。主要包含三个组件:增加的交互式 “Python shell”,解耦的双过程通信模型,交互式并行计算的架构。支持变量自动补全。
  • 然后再进行MySQLdb的安装
    可通过访问http://sourceforge.net/projects/mysql-python,(Linux平台可以访问https://pypi.python.org/pypi/MySQL-python)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。
  • 或直接在 linux 超级用户下,在连接网络的情况下通过pip(pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。)命令进行安装
    执行如下命令,进行安装
    pip install MySQL-python
    然后再进行环境的安装通过yum命令进行安装
    yum install MySQL-python

数据库的相关操作,若是不了解,可移步Linux 下的 MariaDB 数据库管理系统进行了解

  • 通过已创建的数据库进行操作
    数据库名称为 python,中所含表单名称为 customer
    表单中所含项为 username passwd money

2 连接数据库

实例:

以下实例链接Mysql的 python 数据库:

  • Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
    • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
    • fetchall():接收全部的返回结果行.
 # 调用数据库模块
 import MySQLdb
 # 打开数据库,需要:
 # host 数据库主机的ip,若是 ip 无法成功,可尝试通过域名进行访问
 # user 对数据库进行操作的用户
 # passwd 登陆数据库的密码
 # db 所调用的数据库
 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()
 # 若是想要的到的数据是字典的格式,可加上以下限定
 # cur = db.cursor(cursorclass = MySQLdb.cursors.DictCursor) 

 # 使用execute 方法执行SQL语句
 cur.execute('show tables ')

 # 使用 fetchone() 方法获取一条数据
 # data = cur.fetchone()
 data2 = cur.fetchall()

 # 关闭数据库连接
 db.close()
 # print data
 print data2

执行如下:
这里写图片描述
控制台显示如下:
fetchone()的显示
这里写图片描述
fetchall()的显示
这里写图片描述

3 对数据库的内容进行操作

3.1 表单的添加删除与重命名

3.1.1 添加与删除

示例:对数据库中已存在的表单进行删除,并添加新表单

 # 调用数据库模块
 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单的删除
 cur.execute('DROP TABLE customer') 

 # 创建数据表SQL语句
 sql = 'CREATE TABLE consumer( id varchar(6) not null, ' \
                             'name varchar(8) not null)'
 # 执行sql语句
 cur.execute(sql)

 cur.execute('SHOW TABLES')
 data = cur.fetchall()

 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.1.2 表单的重命名

示例:

 # 调用数据库模块
 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单的重命名
 cur.execute('ALTER TABLE consumer RENAME newtable')

 cur.execute('SHOW TABLES')
 data = cur.fetchall()

 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.2 数据的插入

为表单进行数据的插入

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                     passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单的重命名
 cur.execute("INSERT INTO newtable(id,name) VALUES('3','JINX') ")

 cur.execute('SELECT * FROM newtable')
 data = cur.fetchall()
 # 进行请求发送,否则无法同步数据到真实数据库
 db.commit()
 cur.close()
 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

数据的批量插入

表单进行批量的数据添加

# 定义列表,将要添加的信息导入
insert = [
    ('4','ZED'),
    ('5','RIVEN'),
]
# 执行sql语句,对内容进行插入
cur.executemany("INSERT INTO newtable(id,name) values(%s,%s)",insert)

cur.execute('SELECT * FROM newtable')
data = cur.fetchall()

db.commit()
cur.close()
# 关闭数据库连接
db.close()
print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

为表单添加子段

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                      passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单进行字段添加
 cur.execute("ALTER TABLE newtable ADD age varchar(8)")

 cur.execute('DESC newtable')
 data = cur.fetchall()

 cur.close()

 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.3 数据的更新

对表单中字段的数据进行更新

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                     passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单中的数据进行更新
 cur.execute("UPDATE newtable SET age = '16' WHERE name = 'JINX'")

 cur.execute('SELECT * FROM newtable')
 data = cur.fetchall()

 db.commit()
 cur.close()
 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

3.4 数据的删除

对表单中字段的数据进行更新

示例:

 import MySQLdb

 db = MySQLdb.connect(host='127.0.0.1', user='root',
                     passwd='redhat', db='python')
 # 使用cursor的方法获取操作游标
 cur = db.cursor()

 # 使用execute 方法执行SQL语句
 # 进行表单中的数据进行删除
 cur.execute("DELETE FROM newtable WHERE name = 'Tim' ")

 cur.execute('SELECT * FROM newtable')
 data = cur.fetchall()

 db.commit()
 cur.close()
 # 关闭数据库连接
 db.close()
 print data

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

4 错误处理

DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:

异常 描述
Warning 当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。
Error 警告以外所有其他错误类。必须是 StandardError 的子类。
InterfaceError 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。
DatabaseError 和数据库有关的错误发生时触发。 必须是Error的子类。
DataError 当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类。
OperationalError 指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。
IntegrityError 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。
InternalError 数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类。
ProgrammingError 程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。
NotSupportedError 不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python入门—— MySQL-python模块 的相关文章

随机推荐

  • frp实现内网穿透(一) 最简配置

    frp实现内网穿透 一 最简配置 内网环境现在可以说非常的普遍 如果连接控制的内网环境设备的话 就变得非常不方便 像端口映射 dmz主机已经不能满足我们的要 不过好在现在实现内网穿透的工具也很多 在这里就记录下一这款配置简单 功能强大的内网
  • 线性代数-初等行变换与初等行矩阵

    定义 初等行变换 在矩阵的行上进行倍加 倍乘 对换变换 初等行矩阵 在单位矩阵上应用初等行变换得到的矩阵 初等行矩阵乘上矩阵 就相当于在矩阵上实施了对应的初等行变换 以矩阵为例 倍加 将第二行乘2加在第三行上 r3 2 r2 r3 所用的初
  • VMWare安装Windows10出现以下问题

    VMWare虚拟机安装Win10出现 Attempting to start up from 直接上图 选择ISO镜像以后 开启虚拟机出现以下界面 等待一会没有操作以后出现以下界面 解决方法 1 关闭虚拟机电源 一定要关闭 2 找到该虚拟机
  • 阿里巴巴为什么不用 ZooKeeper 做服务发现?

    原文地址 https yq aliyun com articles 599997
  • Git 多个GitHub账号配置和多个Hexo博客地址配置

    文章目录 需求场景 方法 TL DR 非图形界面方法 1 生成密钥 2 配置config 3 添加新的 SSH 密钥 到 SSH agent 4 验证配置 5 配置仓库设置 5 1 删除全局配置 5 2 设置local配置 6 示例 6 1
  • Linux-centos花生壳实现内网穿透

    Linux centos花生壳实现内网穿透 官网教程 1 安装花生壳 下载网址 点击复制就可以复制下载命令了 wget https dl oray com hsk linux phddns 5 2 0 amd64 rpm O phddns
  • 递归寻找第n位数字

    编写递归函数digit n j 返回整数n的从右边开始的第j位数字 首先来看非递归法 只需用n 10 j 1 10即可 include
  • linux连接Xshell

    一 下载和安装Xshell 1 下载Xshell 官网下载地址 有时需要科学上网 https www netsarang com en all downloads 点击下载 教育版 2 安装 和软件安装方式一样 二 Xshell连接linu
  • 快乐数(Java)

    编写一个算法来判断一个数 num 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 如果 可以变为 1 那么这个数就是快乐数
  • 瀑布流布局2

    要实现瀑布流布局中让图片先排满第一行再排第二行 你可以使用 CSS 的多列布局 CSS multi column layout 来控制 目前你的布局使用了 column count 和 column gap 来定义列数和列之间的间隙 但这会
  • 记一次ElasticSearch 更改 mapping 字段类型的过程

    我的个人博客 逐步前行STEP 首先 es不支持直接更改mappinng 所以 更改 mapping 实质上是重建索引 操作步骤如下 1 为当前这个索引old index设置一个别名my index curl XPOST localhost
  • 数据类型分类

    分为四种类型
  • Java垃圾回收机制(GC)

    一 要回收哪些区域 在JVM内存模型中 有三个是不需要进行垃圾回收的 程序计数器 JVM栈 本地方法栈 因为它们的生命周期是和线程同步的 随着线程的销毁 它们占用的内存会自动释放 所以只有方法区和堆需要进行GC 二 如何判断对象是否存活 1
  • linux 开放端口

    我们可以输入命令查看防火墙的状态 firewall cmd state 如何在CentOS 7下开放8080端口 如果上一步处于关闭状态 输入命令 systemctl start firewalld service 如何在CentOS 7下
  • 计算机毕业设计Node.js+Vue大型零售电商平台——购物车管理子系统(程序+源码+LW+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 Node js Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 Express框架 No
  • 华硕T100HA鼠标乱跳及点击问题解决

    从入手此平板开始就一直有此问题 一直没有解决 今天正好装系统 就顺便解决此问题 一开始打算给这个平板安装Win7 8 网上说装了之后驱动不适配 就此放弃 然后 将系统恢复出厂设置了 然后问题依然在 在网上一直找啊找 终于在百度帖吧里找到问题
  • 人工智能概念

    人工智能概念 人工智能就是用人工方法在机器 计算机 上实现的智能 或称机器智能 即是研究如何用计算机来表示和执行人类的智能活动 以模拟人脑所从事的推理 学习 思考和规划等思维活动 并解决需要人类的智力才能处理的复杂问题 如医疗诊断 管理决策
  • 两个任意长度的长整数相乘(华为oj,C++)

    pre class cpp include oj h include pre
  • 【Android系统蓝牙开发】蓝牙基础知识-蓝牙核心系统架构

    什么是蓝牙 在开启基于蓝牙Spec v5 2的学习前 我们先了解下什么是蓝牙 蓝牙在我们日常生活中又存在哪些实际应用呢 蓝牙无线技术是一种短距离无线通信系统 其核心特性主要是以下三点 robustness 鲁棒性 抗干扰能力强 Low po
  • Python入门—— MySQL-python模块

    MySQL python模块 MySQLdb Python 标准数据库接口为 Python DB API Python DB API为开发人员提供了数据库应用编程接口 可以访问Python数据库接口及API查看详细的支持数据库列表 不同的数