如何用python连接mysql数据库

如何用python连接mysql数据库,第1张

在 Python 语言环境下我们这样连接数据库。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")

但是连接数据库的背后发生了什么呢?

答案

当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程序,驱动程序再根据参数会发起到 MySQL 服务端的 TCP 连接。当 TCP 连接建立之后驱动程序与服务端之间会按特定的格式和次序交换数据包,数据包的格式和发送次序由 MySQL 协议 规定。MySQL 协议:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整个连接的过程中 MySQL 服务端与驱动程序之间,按如下的次序发送了这些包。

MySQL 服务端向客户端发送一个握手包,包里记录了 MySQL-Server 的版本,默认的授权插件,密码盐值(auth-data)。

2. MySQL 客户端发出 ssl 连接请求包(如果有必要的话)。

3. MySQL 客户端发出握手包的响应包,这个包时记录了用户名,密码加密后的串,客户端属性,等等其它信息。

4. MySQL 服务端发出响应包,这个包里记录了登录是否成功,如果没有成功也会给出错误信息。

oracle 有重复值,分组取和 100

业务表很大, 不能单独举例,大体意思如下图:1.以NO字段为主,进行分组。2.同一个NO,会对应不同的姓名。3.如果收费项目包含‘10’的话,NO字段在表中唯一,不重复。4.目标语句:当收费醒目包含‘10’这一项,则统计no='1' 且 姓名=‘张三’,所有收费项目对... 业务表很大, 不能单独举例,大体意思如下图:1.以NO字段为主,进行分组。2.同一个NO,会对应不同的姓名。3.目标语句:当收费醒目包含‘10’这一项,则统计no='1' 且 姓名=‘张三’,所有收费项目对应的金额之和。

1.以NO字段为主,进行分组。

select a.no,sum(a.金额) from table a group by a.no

2.同一个NO,会对应不同的姓名。

select a.no,a.姓名,sum(a.金额) from table a group by a.no,a.姓名

3.目标语句:当收费醒目包含‘盐’这一项,则统计no='10' 且 姓名=‘张三’,所有收费项目对...

select a.项目,sum(a.金额) from table a where a.收费项目= '1' and a.no = '10' and a.姓名=‘张三’ group by a.项目

查看版本信息 #1使用命令行模式进入mysql会看到最开始的提示符 Your MySQL connection id is 3 Server version: 5.1.69 Source distribution #2命令行中使用status可以看到 复制代码 代码如下:mysql>status-------------- mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1 Connection id:3 Current database: Current user: root@localhost SSL: Not in use Current pager:stdout Using outfile:'' Using delimiter:Server version:5.1.69 Source distribution Protocol version:10 Connection: Localhost via UNIX socket Server characterset:utf8 Db characterset:utf8 Client characterset:utf8 Conn. characterset:utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 3 days 14 hours 50 sec Threads: 1 Questions: 5 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.0 #3 使用系统函数 复制代码 代码如下:mysql>select version()+-----------+ | version() | +-----------+ | 5.1.69 | +-----------+ 1 row in set (0.12 sec) #4 $ mysql --help | grep Distrib mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1 #5 包管理工具(根据不同系统 rh系列或则是bsd系列) $ rpm -qa|grep mysql qt-mysql-4.6.2-20.el6.x86_64 mysql-server-5.1.69-1.el6_4.x86_64 mysql-libs-5.1.69-1.el6_4.x86_64 mysql-5.1.69-1.el6_4.x86_64 mysql-devel-5.1.69-1.el6_4.x86_64


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

原文地址: https://outofmemory.cn/zaji/7410187.html

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

发表评论

登录后才能评论

评论列表(0条)

保存