栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 数据库编程,这篇是针对 mysql 的,滚雪球学Python第4季第13篇

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 数据库编程,这篇是针对 mysql 的,滚雪球学Python第4季第13篇

在第一季滚雪球学 python 中 我们已经接触了 python 操作 sqlite 本篇博客为你介绍 python 与 mysql 和 nosql 之间的故事。

在正式学习之前 先确保你电脑上已经安装了 mysql 。

mysql 的安装博客 补充知识 2021 年 mysql 最新 windows 安装教程 滚雪球学 python 第四季。

mysql 一些简单命令

对于 mysql 的细致学习 咱们应该单独开一个系列 这个 flag 先立下了 本文为了学习 python 操作 mysql 数据库 只能先做一些基本铺垫。

查看所有数据库

show databases;

查看帮助

help

退出 mysql

exit

创建数据库

create database cadb;

删除数据库

drop database cadb;

使用某个数据库

use cadb;

查看库表

show tables;

查看表结构

desc 表名;

除了上述内容外 你还要学习建表语句 删表语句 表中插入数据语句 表删除数据语句 表更新数据语句 这些稍后在 python 操作 mysql 中进行实现。

python 操作 mysql

操作数据库一般被程序员成为 CRUD 操作 增删改查 其中各个字符分别代表 C Create 新增 R Read 读取 U Update 更新 D Delete 删除。

在 python3 中推荐使用 pymysql 模块操作数据库 模块使用命令 pip install PyMySQL 进行安装。

在此之前 先通过 MySQL Command Line Client 创建一个表用来做测试。

新建库 新建表 插入数据 命令依次如下

show databases;
create database cadb;
use cadb;
-- 建表语句
create table user(name varchar(10),uid int,primary key(uid));
desc user;


接下来在表中插入 2 条数据。

insert into user(name,uid) values ( 橡皮擦 ,1);
insert into user(name,uid) values ( CSDN ,2);

简单的查询 sql 如下所示

select * from user;


下面就可以在 python 中编写操作该库表的相关代码了 数据库链接步骤如下

连接数据库 生成连接对象 创建游标对象 用于访问数据表 执行 sql 语句 关闭游标 关闭连接。

python 查询数据
python 连接数据库获取数据

import pymysql
# python 连接数据库 返回数据库连接对象
conn pymysql.connect(host 127.0.0.1 , user root , password xiangpica , database cadb , charset utf8 )
print(conn)

输出连接对象如下所示

 pymysql.connections.Connection object at 0x00000000021E2F60 

其中 connect 方法相关的参数可以依据名称进行判断。

接下来就是创建游标 提取数据。

# 通过 cursor() 创建游标对象 并让查询结果以字典格式输出
cur conn.cursor(cursor pymysql.cursors.DictCursor)
# 输出 pymysql.cursors.DictCursor object at 0x0000000002C03B00 

下一步使用游标对象 cur 的 execute 方法执行 sql。

cur.execute( select * from user )

最后通过相关方法获取查询结果 本案例获取所有用户使用 fetchall 方法。

# 获取查询结果
data cur.fetchall()

输入数据库检索的所有数据。

[{ name : 橡皮擦 , uid : 1}, { name : CSDN , uid : 2}]

关闭游标 关闭连接

# 关闭游标
cur.close()
# 关闭数据库连接
conn.close()

接下来我们将其修改的复杂一些 检索特定数据 例如 uid 1 的数据 并且用到上下文管理器 with 进行对象的关闭。

第一种写法

import pymysql
# python 连接数据库 返回数据库连接对象
conn pymysql.connect(host 127.0.0.1 , user root , password xiangpica , database cadb , charset utf8 )
# print(conn)
with conn.cursor(cursor pymysql.cursors.DictCursor) as cur:
 cur.execute( select * from user where uid %s , 1)
 # 获取查询结果
 data cur.fetchall()
 print(data)
# 关闭数据库连接
conn.close()

第二种写法

import pymysql
# python 连接数据库 返回数据库连接对象
conn pymysql.connect(host 127.0.0.1 , user root , password xiangpica , database cadb , charset utf8 )
# print(conn)
with conn.cursor(cursor pymysql.cursors.DictCursor) as cur:
 cur.execute( select * from user where uid %(uid)s , { uid : 1})
 # 获取查询结果
 data cur.fetchall()
 print(data)
# 关闭数据库连接
conn.close()

两种写法 在 execute 方法参数存在差异 可直接对比学习。

python 更新数据表数据
接下来演示的是使用 python 去更新表数据 例如将 uid 2 的 name 列更新为 Code。

import pymysql
# python 连接数据库 返回数据库连接对象
conn pymysql.connect(host 127.0.0.1 , user root , password xiangpica , database cadb , charset utf8 )
# print(conn)
with conn.cursor(cursor pymysql.cursors.DictCursor) as cur:
 try:
 cur.execute( update user set name %s where uid %s , [ Code , 2])
 conn.commit() # 提交事务
 except Exception as e:
 print( 数据更新异常 , e)
 conn.rollback() # 数据回滚
# 关闭数据库连接
conn.close()

上述代码核心为在执行 SQL 操作之后 需要使用事务处理 即 conn.commit 提交事务 确保当前修改生效 如果出现异常 还需要使用 conn.rollback 对提交事务进行回滚。

cursor. execute 可以返回受影响行数 可以直接通过该值判断是否修改成功。

本次代码还使用了 try-except 语句 对于 PyMySQL 模块内置的异常类 清单如下

StandardError WarningError InterfaceErrorDatabaseError DataErrorOperationalErrorIntegrityErrorProgrammingErrorNotSupportedError

python 新增数据表数据
接下来演示增加数据 本次插入数据都采用硬编码 如果想创建一个自动递增的表字段 需要继续研究 sql 相关写法。

import pymysql
# python 连接数据库 返回数据库连接对象
conn pymysql.connect(host 127.0.0.1 , user root , password xiangpica , database cadb , charset utf8 )
# print(conn)
with conn.cursor(cursor pymysql.cursors.DictCursor) as cur:
 try:
 affected cur.execute( insert into user(name,uid) values (%s,%s) , [ Good , 3])
 conn.commit() # 提交事务
 print( 受影响行数 , affected)
 except Exception as e:
 print( 数据插入异常 , e)
 conn.rollback() # 数据回滚
# 关闭数据库连接
conn.close()

python 删除表格数据
核心代码如下所示

affected cur.execute( delete from user where uid %s , [3])
conn.commit() # 提交事务
print( 受影响行数 , affected)

写到这里 你可以自行完成一个 python 简单的数据库操作封装。

python 操作 nosql 之 dbm

mysql 数据关系型数据库 与之对应的就是非关系型数据库 例如 python 内置的 dbm database manager

第一个要学习的方法是 dbm.open 方法原型如下所示

def open(file, flag r , mode 0o666):

flag 参数

r : 只读 w : 只写 n : 总是创建一个数据库 打开方式为读写 c : 存在不创建 不存在则创建。

关闭数据库使用 dbm.close() 使用 with 语句之后 不需要手动释放资源。

with dbm.open(xxx) as db:
 pass

dbm 存储的形式类似 python 字典 以键值对形式存在。

import dbm
with dbm.open( example.db , n ) as db:
 db[ name ] 橡皮擦 # 存储值
 db[ age ] 18 # values must be bytes or strings

读取值使用 db[key] 即可 如果没有 key 值 提示 KeyError 错误。

import dbm
with dbm.open( example.db , r ) as db:
 ca db[ name ]
 age db[ age ]
 print(ca)

dbm 数据库保存的数据是字符串类型或者字节序列类型 读取到的值是字节序列类型 需要使用解码函数 decode 转换成字符串。

写在后面

以上内容就是本文的全部内容 希望对学习路上的你有所帮助~

今天是持续写作的第 230 / 365 天。
期待 关注 点赞、评论、收藏。

更多精彩

滚雪球学 Python 完结 滚雪球学 Python 第二轮 完结 滚雪球学 Python 第三轮滚雪球学 Python 番外篇 完结
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号