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 errorcode

try:
    # 配置连接信息
    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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Photoshop 2023下载安装教程,免费直装版,2步搞定安装,附安装包

准备工作: 1、提前准备好photoshop 2023安装包 没有的可以参考下面方式获取 2、系统要求Windows 10 及以上 安装步骤 1.找到下载好的安装包,直接双击解压 2.双击运行【Set-up.exe】文件 3.点击文件夹图标,更改安装位置 4.点击【继续】&a…

从一到无穷大 #22 基于对象存储执行OLAP分析的学术or工程经验,我们可以从中学习到什么?

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言以AWS S3为例的对象存储基本特征成本时延吞吐量最优请求大小Model for Cloud Sto…

Visual Studio使用Git忽略不想上传到远程仓库的文件

前言 作为一个.NET开发者而言,有着宇宙最强IDE:Visual Studio加持,让我们的开发效率得到了更好的提升。我们不需要担心环境变量的配置和其他代码管理工具,因为Visual Studio有着众多的拓展工具。废话不多说,直接进入正…

机器学习 | 基于网格搜索的SVM超参数调节

机器学习模型被定义为一个数学模型,其中包含许多需要从数据中学习的参数。然而,有一些参数,称为超参数,这些参数不能直接学习。它们通常是由人类在实际训练开始前根据直觉或经验和试验选择的。这些参数通过提高模型的性能&#xf…

Deepin系统安装x11vnc远程桌面工具实现无公网ip访问本地桌面

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具,它的原理是通过X Window系统的协议来实现远程桌面的展…

2018年苏州大学837复试机试C/C++

2018年苏州大学复试机试 要求 要求用C/C编程;对程序中必要的地方进行注释。上机规则 请在电脑桌面上新建一个文件夹文件夹名为考试姓名(中文);考试完毕后,将所编写的文件放在上述文件中。 第一题(20分&…

CTFshow web(php特性 105-108)

web105 <?php /* # -*- coding: utf-8 -*- # Author: Firebasky # Date: 2020-09-16 11:25:09 # Last Modified by: h1xa # Last Modified time: 2020-09-28 22:34:07 */ highlight_file(__FILE__); include(flag.php); error_reporting(0); $error你还想要flag嘛&…

在windows和Linux中的安装 boost 以及 安装 muduo 和 mysql

一、CMake安装 Ubuntu Linux 下安装和卸载cmake 3.28.2版本-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135960115?spm1001.2014.3001.5501二、安装boost boost官网&#xff1a;boost官网 我下载的boost版本&#xff1a; windows:boost_1_84_0.zipli…

ROS机器视觉应用中的关键点

1.ROS图像接口 ​​​​​​ 2.摄像头内参标定 3.ROS&#xff0b;OpenCV物体识别 ​​​ 4.小结

C++学习Day04之对象字节数初探

目录 一、程序及输出1.1 空类字节数1.2 非空类字节数1.3 设置对齐方式的数值 二、分析与总结 一、程序及输出 1.1 空类字节数 #include<iostream> using namespace std;class Person { };void test01() {//空类的sizeof结果是1 原因 每个对象都应该在内存上有独一无二…

项目02《游戏-07-开发》Unity3D

基于 项目02《游戏-06-开发》Unity3D &#xff0c; 接下来做UI框架的逻辑系统&#xff0c;管理器和UI背包&#xff0c; 首先闯将UI框架的两个重要脚本 BasePanel.cs 和 UIManager.cs &#xff0c; 双击BasePanel.cs脚本修改代码&#xff1a; using UnityEngine; pu…

从头开始构建和训练 Transformer(上)

1、导 读 2017 年&#xff0c;Google 研究团队发表了一篇名为《Attention Is All You Need》的论文&#xff0c;提出了 Transformer 架构&#xff0c;是机器学习&#xff0c;特别是深度学习和自然语言处理领域的范式转变。 Transformer 具有并行处理功能&#xff0c;可以实现…

bitcoin core 请求拒绝响应【或者】卡死

日志 经过排查节点日志&#xff0c;发现抛出异常。 tail -f debug.log日志&#xff1a; 2024-02-05T05:56:26Z BlockUntilSyncedToCurrentChain: txindex is catching up on block notifications 2024-02-05T05:56:26Z BlockUntilSyncedToCurrentChain: txindex is catching…

Docker容器化扫描SonarScanner

文章目录 1.SonarQube创建项目1.1 手工创建1.2 创建web_test_learning1.3 选择本地1.4 点击创建1.5 点击继续1.6 项目总揽 2.SonarScanner2.1 获取镜像2.2 启动扫描2.3 页面结果 3.SonarLint3.1 下载SonarLint插件3.2 配置连接到SonarQube3.3 在SonarQube页面“用IDE打开”3.4 …

今日arXiv最热NLP大模型论文:微软提出SliceGPT,删除25%模型参数,性能几乎无损

引言&#xff1a;探索大型语言模型的高效压缩方法 随着大型语言模型&#xff08;LLMs&#xff09;在自然语言处理领域的广泛应用&#xff0c;它们对计算和内存资源的巨大需求成为了一个不容忽视的问题。为了缓解这些资源限制&#xff0c;研究者们提出了多种模型压缩方法&#…

《短链接--阿丹》--技术选型与架构分析

整个短链接专栏会持续更新。有兴趣的可以关注一下我的这个专栏。 《短链接--搭建解析》--立项+需求分析文档-CSDN博客 阿丹: 其实整套项目中的重点,根据上面的简单需求分析来看,整体的项目难题有两点。 1、快速的批量生成短链,并找到对应的存储。 并且要保持唯一性质。…

java基本知识详解

八大基本数据类型 java的数据类型可以说很简洁&#xff0c;只有整型&#xff0c;浮点型&#xff0c;字符型&#xff0c;和布尔型四大种&#xff0c;八小种基本类型。 整型 byte&#xff1a;-2^7 ~ 2^7-1&#xff0c;即-128 ~ 127。1字节。 short&#xff1a;-2^15 ~ 2^15-…

SpringIOC之support模块PropertySourcesPlaceholderConfigurer

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

app对接优量汇收益如何?

优量汇作为国内头部的广告联盟&#xff0c;开发者在对接时要注意哪些方面&#xff1f; AdSet官网 | 聚合SDK广告变现平台-上海神蓍信息科技有限公司 一、优量汇优势&#xff1a; &#xff08;1&#xff09;快速变现&#xff0c;节省对接时间 1、快速变现&#xff0c;节省接…

router路由跳转的两种模板

<router-link><router-link/> <router-view><router-view/> link &#xff1a;链接&#xff0c;联系 view&#xff1a;指看见展现在人们面前的、可以稳定地进行详细审视的事物 将语境拉回到router里&#xff0c;抽象概括一下 router-link就是一个…