Python 连接 mysql 详解(mysql-connector-python)

文章目录

  • 1 概述
    • 1.1 第三方库:mysql-connector-python
    • 1.2 可视化工具:navicat
    • 1.3 创建测试数据库
  • 2 连接 mysql 数据库
    • 2.1 创建一个连接
    • 2.2 捕获连接异常
    • 2.3 从配置文件中获取连接信息
  • 3 执行 sql 语句
    • 3.1 插入、更新、删除
    • 3.2 查询

1 概述

1.1 第三方库:mysql-connector-python

pip install mysql-connector-python

1.2 可视化工具:navicat

在这里插入图片描述

1.3 创建测试数据库

在这里插入图片描述

-- 创建数据库
create database python_demo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;-- 创建测试表
create table python_demo.student(sno      int unsigned auto_increment comment '学号',sname    varchar(30) not null comment '姓名',age      int comment '年龄',birthday date comment '出生日期',primary key(sno)
) engine=innodb default charset=utf8 comment '学生信息表';

2 连接 mysql 数据库

2.1 创建一个连接

import mysql.connector# 配置连接信息
conn = mysql.connector.connect(host='127.0.0.1',port='3306',user='root',password='12345',database='python_demo'
)
# 当前 mysql 版本号
print(conn.get_server_version())

2.2 捕获连接异常

import mysql.connector
from mysql.connector import errorcodetry:# 配置连接信息conn = mysql.connector.connect(host='127.0.0.1',port='3306',user='root',password='12345',database='python_demo')# 当前 mysql 版本号print(conn.get_server_version())# 捕获异常
except mysql.connector.Error as err:if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:print('账号或密码错误!')elif err.errno == errorcode.ER_BAD_DB_ERROR:print('数据库不存在!')else:print(err)
else:# 关闭连接conn.close()

2.3 从配置文件中获取连接信息

目录结构:
在这里插入图片描述

config.ini:

[mysql]
host = 127.0.0.1
port = 3306
user = root
password = 12345
database = python_demo

m1.py:

import mysql.connector
from mysql.connector import errorcode
import configparser# 创建配置解析器对象
config = configparser.ConfigParser()
# 读取配置文件
config.read('config.ini')try:# 配置连接信息conn = mysql.connector.connect(host=config.get('mysql', 'host'),port=config.get('mysql', 'port'),user=config.get('mysql', 'user'),password=config.get('mysql', 'password'),database=config.get('mysql', 'database'))# 当前 mysql 版本号print(conn.get_server_version())# 捕获异常
except mysql.connector.Error as err:if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:print('账号或密码错误!')elif err.errno == errorcode.ER_BAD_DB_ERROR:print('数据库不存在!')else:print(err)
else:# 关闭连接conn.close()

3 执行 sql 语句

3.1 插入、更新、删除

  • execute():用来执行 sql 语句,如:增删改查,存储过程等
  • commit():用来提交事务
import mysql.connector# 配置连接信息
conn = mysql.connector.connect(host='127.0.0.1',port='3306',user='root',password='12345',database='python_demo'
)# 创建游标对象
cursor = conn.cursor()# 操作数据:插入、修改、删除 同理,注:数据类型均可用 %s
# 操作一条数据
sql = 'insert into student(sname, age, birthday) values(%s, %s, %s);'
param = ('张三', '18', '1994-12-08')
cursor.execute(sql, param)# 操作多条数据
sql = 'insert into student(sname, age, birthday) values(%s, %s, %s);'
param = [('李四', '20', '1992-10-05'),('王五', '16', '1996-05-26'),('赵六', '08', '1994-05-26')]
cursor.executemany(sql, param)# 提交数据
conn.commit()# 关闭游标和数据库连接
cursor.close()
conn.close()

3.2 查询

import mysql.connector# 配置连接信息
conn = mysql.connector.connect(host='127.0.0.1',port='3306',user='root',password='12345',database='python_demo'
)# 创建游标对象
cursor = conn.cursor()# 查询数据
sql = 'select sno, sname, age, birthday from student where sno >= %s'
param = (1,)cursor.execute(sql, param)
result = cursor.fetchall()# 打印结果
for row in result:print(row)# 关闭游标和数据库连接
cursor.close()
conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/454391.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作为一个27岁的人,学习单片机然后进入这行的可能性大吗?

作为一个27岁的人,学习单片机然后进入这行的可能性大吗?有c语言基础。? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「c语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“…

Spring Web URL 解析常见错误

上一章节我们讲解了各式各样的错误案例,这些案例都是围绕 Spring 的核心功能展开的,例如依赖注入、AOP 等诸多方面。然而,从现实情况来看,在使用上,我们更多地是使用 Spring 来构建一个 Web 服务,所以从这节…

缩略图保持加密(TPE)论文

文献: R.Zhao,Y.Zhang,Y.Nan,W.Wen,X.Chai,andR. Lan, “Primitively visually meaningful image encryption: A new paradigm,” Inf. Sci. (Ny), Vol. 613, pp. 628–48, 2022. DOI: 10.1016/j.ins.2022.08.027. (1) 第1行:原始图像 第2行:加密图像 加密的目标: 原始…

Verilog实现2进制码与BCD码的互相转换

1、什么是BCD码? BCD码是一种2进制的数字编码形式,用4位2进制数来表示1位10进制中的0~9这10个数。这种编码技术,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字做准确的计算。相对于一般的浮点式记数法,…

【科普】宝宝能听到声音,听力就是正常的吗?

1、什么是新生儿听力筛查 新生儿听力筛查就是用快速而简便精确的方法从新生儿人群中间鉴别出可能存在听力障碍的个体的过程。 2、为什么要做听力筛查? 听力障碍又被称为“看不见的残疾”,是常见的出生缺陷,发生率在0.1%~0.3%,。我国最新统计&…

财务数据处理问题及解决方案分享

一、平台介绍 财务自营计费主要承接京东自营数据在整个供应链中由C端转B端的功能实现,在整个供应链中属于靠后的阶段了,系统主要功能是计费和向B端的汇总。 二、问题描述 近年来自营计费数据量大增,有百亿的数据量,一天中汇总占…

进程和线程的区别详解

🎥 个人主页:Dikz12📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 进程 进程在系统中是如何管理的 进一步认识PCB 线程 能否一直增加线程数目来提高效率 进程和线程…

npm 上传一个自己的应用(2) 创建一个JavaScript函数 并发布到NPM

上文 npm 上传一个自己的应用(1) 搭建一个项目环境 带着大家创建了一个项目环境 我们打开 看json的配置 我们入口是一个叫 index.js 的文件 那么 我们就要把它创建出来 之后 我们的方法也就要写在这里面 和 json同一个目录 创建 index.js 我们这里 写个简单的求和操作 index…

Spring Boot 整合 Redis 使用教程

作为开发者,相信大家都知道 Redis 的重要性。Redis 是使用 C 语言开发的一个高性能键值对数据库,是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」。 Redis 以超…

5G智能卷烟工厂数字孪生可视化平台,推进烟草行业数字化转型

5G智能卷烟工厂数字孪生可视化平台,推进烟草行业数字化转型。随着5G技术的不断发展,智能卷烟工厂数字孪生可视化平台成为了推进烟草行业数字化转型的重要手段。该平台将5G技术与数字孪生技术相结合,实现了对卷烟生产全过程的实时监控、数据分…

好用的大学生教材搜题软件?帮助大学生解决问题的实用搜题工具 #知识分享#知识分享#经验分享

对于大学生来说,每天面对各式各样的学习任务和问题,寻找合适的学习资源和工具成了我们的迫切需求。幸运的是,现如今有许多高效且实用的日常搜题和学习软件可以满足我们的需求,助力我们取得更好的学习成果。 1.Forest专注森林 Fo…

蓝桥杯Web应用开发-CSS 基础语法3(文本属性)

CSS 基础语法-文本属性 专栏持续更新中 文本属性 文本属性用于定义文本的样式,通过文本属性,可以改变文本的颜色、字间距、对齐方式、文本修饰和文本缩进等。常用文本属性如下表所示: 属 性可取值描述line-heightnormal、number、length、…