掌握Python *** 作 MySQL 数据库

掌握Python  *** 作 MySQL 数据库,第1张

本文Python *** 作 MySQL 数据需要是使用到 PyMySQL 驱动

Python *** 作 MySQL 前提是要安装好 MySQL 数据库并能正常连接使用,安装步骤详见下文。

注意: 安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足导致无法安装。

首先需要先下载 MySQL 安装包, 官网下载地址 下载对应版本即可,或直接在网上拉取并安装:

权限设置:

初始化 MySQL:

启动 MySQL:

查看 MySQL 运行状态:

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

登陆:

创建数据库:

查看数据库:

PyMySQL 模块使用 pip命令进行安装:

假如系统不支持 pip 命令,可以使用以下方式安装:

pymysql connect 函数:连接上数据库

输出结果显示如下:表面数据库连接成功

使用 pymysql 的 connect() 方法连接数据库,connect 参数解释如下:

conncursor():获取游标

如果要 *** 作数据库,光连接数据是不够的,咱们必须拿到 *** 作数据库的游标,才能进行后续的 *** 作,游标的主要作用是用来接收数据库 *** 作后的返回结果,比如读取数据、添加数据。通过获取到的数据库连接实例 conn 下的 cursor() 方法来创建游标,实例如下:

输出结果为:

cursor 返回一个游标实例对象,其中包含了很多 *** 作数据的方法,如执行sql语句,sql 执行命令: execute() 和 executemany()

execute(query,args=None):

executemany(query,args=None):

其他游标对象如下表:

完整数据库连接 *** 作实例如下:

以上结果输出为:

创建表代码如下:

如下所示数据库表创建成功:

插入数据实现代码:

插入数据结果:

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

查询数据代码如下:

输出结果:

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

本文给大家介绍 Python 如何连接 Mysql 进行数据的增删改查 *** 作,文章通过简洁的代码方式进行示例演示,给使用 Python *** 作 Mysql 的工程师提供支撑。

select bug_type,bug_severity,count(bug_type),ft_id from tm_bug group by ft_id,bug_type,bug_severity

查找表 tm_bug ,字段1名称为(bug_type),字段2名称为(bug_severity),字段3名称为(ft_id),行数,,以为具有相同字段的ft_id,bug_type,bug_severity进行分组,

可以,但难易程度取决于在下面哪个阶段获取这个数据

客户端软件-->客户端网卡-->路由-->(网络)-->服务器网卡-->>

首先你得想啊:

读取数据库,你需要数据库模块(pymysql或pymssql等等)

显示在网页上,你需要web模块(基本的cgi/wsgi或现成的web框架django/tornado)

首先你要知道如何在视图里渲染模板,另外得要看你用的是什么数据库,以及你是否使用django的orm。

拿mysql为例,如果你只需要从现有数据库中查询数据并显示,那么使用MySQLdb模块即可,查询出来的数据和模板进行渲染,之后返回渲染后的模板对象即可。

MYSQL快速同步数据到Redis

举例场景:存储游戏玩家的任务数据,游戏服务器启动时将mysql中玩家的数据同步到redis中。

从MySQL中将数据导入到Redis的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样没什么错,但是速度会非常慢。如果能够想法使得MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可以节省很多消耗和缩短时间。

Mysql数据库名称为:GAME_DB, 表结构举例:

CREATE TABLE TABLE_MISSION (

playerId int(11) unsigned NOT NULL,

missionList varchar(255) NOT NULL,

PRIMARY KEY (playerId)

);

Redis中的数据结构使用哈希表:

键KEY为mission, 哈希域为mysql中对应的playerId, 哈希值为mysql中对应的missionList。 数据如下:

[root@iZ23zcsdouzZ ~]# redis-cli

127001:6379> hget missions 36598

"{\"10001\":{\"status\":1,\"progress\":0},\"10002\":{\"status\":1,\"progress\":0},\"10003\":{\"status\":1,\"progress\":0},\"10004\":{\"status\":1,\"progress\":0}}"

快速同步方法:

新建一个后缀sql文件:mysql2redis_missionsql

内容如下:

SELECT CONCAT(

"4\r\n",

'$', LENGTH(redis_cmd), '\r\n',

redis_cmd, '\r\n',

'$', LENGTH(redis_key), '\r\n',

redis_key, '\r\n',

'$', LENGTH(hkey), '\r\n',

hkey, '\r\n',

'$', LENGTH(hval), '\r\n',

hval, '\r'

)

FROM (

SELECT

'HSET' as redis_cmd,

'missions' AS redis_key,

playerId AS hkey,

missionList AS hval

FROM TABLE_MISSION

) AS t

创建shell脚本mysql2redis_missionsh

内容:

mysql GAME_DB --skip-column-names --raw < missionsql | redis-cli --pipe

Linux系统终端执行该shell脚本或者直接运行该系统命令,即可将mysql数据库GAME_DB的表TABLE_MISSION数据同步到redis中键missions中去。mysql2redis_missionsql文件就是将mysql数据的输出数据格式和redis的输入数据格式协议相匹配,从而大大缩短了同步时间。

经过测试,同样一份数据通过单条取出修改数据格式同步写入到redis消耗的时间为5min, 使用上面的sql文件和shell命令,同步完数据仅耗时3s左右。

1背景:

python提供了很多数据库接口, 常用的数据库有 MS SQL Server /mysql /oracle 等。

打开链接 >

是python 关于数据库接口的一个总结 , 可以看到python支持的访问的数据库系统。

2模块:

python 主要是通过模块和数据库连接的。

21 安装模块:

如果使用anconda,本身就会集合很多模块,不需要手动安装。如果用pycharm就要手动安装模块。

安装模块流程:

下载模块扩展包放到路径下——>cmd找到相应路径——> pip install +扩展包名字

下面列举一些常用连接数据库的模块:pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi

不同模块连接的数据库不同, 支持的版本系统有的也不一样。但是大体用法都是相近的, 因为有DB-API

:《Python教程》

3Python DB-API

31背景:

在没有DB-API 之前, 不同数据库有不同的数据库接口程序, 这就导致python 访问 database 的接口程序非常混乱。如果我们学习了python 访问 mysql 的接口程序, 然后要切换到另一个数据库上, 我们还要在学习另外一个数据库的接口程序。python DB-API就是为了解决接口程序混乱而生成的。有了DB-API, 在不同数据库上移植代码就变得简单的多了。

32Python DB-API:

Python 定义了一套 *** 作数据库的 DB-API 接口,它是一个规范,定义了一系列必须的对象和数据库存取方式,以便为不同的底层数据库系统提供一致的访问接口

这个链接就是python 官方给定的 DB-API 的说明 >

33 Python DB--API的内容:

连接对象:

Connect()创建连接:host/server /user/password/db connect方法生成一个connect对象, 我们通过这个对象来访问数据库。符合标准的模块都会实现connect方法。

close():关闭连接

commit():提交当前事务。做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到database中

rollback() 回滚上一次调用 commit()以来对数据库所做的更改

cursor():创建游标。系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。cursor游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意

游标对象:

Execute()执行一个数据库查询或命令。 execute 执行sql 语句之后运行的结果不会直接output 出来 , 而是放到了一个缓存区, 要用 fetch语句+print 可以查询sql运行的结果

fetchone ()得到结果集的下一行

fetchmany(size)得到结果集的下几行

fetchall()返回结果集中剩下的所有行

rowcount 返回影响的行数

Close()关闭游标对象

34Python DB--API的工作原理及流程:

如图所示如果把python 和数据库比作两个不同的地点, connection 就是路, 能连接python和database。cursor就像在路上行驶的小货车, 可以用于执行sql 语句, 以及存储sql 运行的结果。

流程:

4MS SQL Server 示例:

41 导入模块、创建连接:

42 创建游标: 游标创建之后就可以对数据库进行查询更改了!

43对数据进行 *** 作(创建表、插入行、更新数据、增加列、删除行、列、表):

44 查询 获取行:

5其他:

使用游标的时候要注意, 每次连接只能有一个游标查询处于活跃状态。 code演示:

execute()循环和 executemany() 插入100000 条数据测速:

以上就是关于掌握Python *** 作 MySQL 数据库全部的内容,包括:掌握Python *** 作 MySQL 数据库、python从数据库中读取某列的数值、python可以获取post向网站后台数据库批量导入数据吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10142147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存