python自动化笔记:操作mysql数据库

news2024/9/21 8:24:52

操作mysql数据库常见方法

  • 1、第三方库:pymysql
    • 1.1、安装pymysql
    • 1.2、连接数据库
    • 1.3、连接指定数据库
    • 1.4 创建数据库、创建表
    • 1.5、表中插入数据
    • 1.6、批量插入数据
    • 1.7、获取查询结果数据
    • 1.8、防sql注入,sql语句中一般用占位符传值
  • 2、标准库 :mysql.connector
    • 2.1、安装mysql-connector
    • 2.2、操作方法

1、第三方库:pymysql

1.1、安装pymysql

终端输入:pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/

1.2、连接数据库

import pymysql

def connect():
    # 连接数据库
    conn = pymysql.connect(
    host="localhost",
    user="root",
    password="123456"
    )
    print(conn)
    return(conn)
# 调用
connect()

1.3、连接指定数据库

def connect_database(database):
    # 连接数据库
    conn = pymysql.connect(
    host="localhost",
    user="root",
    password="123456",
    database=database
    )
    print(conn)
    return(conn)

connect_database("test")

1.4 创建数据库、创建表

# 创建数据库
def creatdatabase(databasename):
    # 连接数据库
    conn = pymysql.connect(
        host="localhost",
        user="root",
        password="123456"
    )
    # 创建游标对象
    cursor = conn.cursor()
    # sql中使用变量,格式化输出
    # 创建数据库
    sql ="CREATE DATABASE IF NOT EXISTS {0}".format(databasename)
    cursor.execute(sql)
    # 展示所有数据库
    cursor.execute("SHOW DATABASES;")
    # 展示执行结果
    for database in cursor:
        print(database)
# 调用
creatdatabase("test")

# 创建表
def createtable():
    conn = pymysql.connect(
        host="localhost",
        user="root",
        password="123456",
        database="test"
    )
    cursor = conn.cursor()
    # 删除表格
    cursor.execute("drop table if exists student")
    # 创建表格
    sql="create table student(id int auto_increment primary key, name varchar(20), class varchar(255))"
    cursor.execute(sql)

# 调用
createtable()

1.5、表中插入数据

def insertdata():
    conn = pymysql.connect(
        host="localhost",
        user="root",
        password="123456",
        database="test"
    )
    # 创建游标对象
    cursor=conn.cursor()
    # 插入数据sql,2种方式,推荐使用第一种占位符的方式,避免sql注入
    # 方式一
    addsheshou_sql="insert into student(name,class)values(%s, %s)"
    addsheshou_value = ("luban", "1")
    cursor.execute(addsheshou_sql,addsheshou_value)
    # 方式二
    addfashi_sql = "insert into student(name,class)values('anqila','2')"
    cursor.execute(addfashi_sql)
    # 提交
    conn.commit()
    # 查询语句
    cursor.execute("select * from student where name='luban' ")
    # 查看返回结果
    res = cursor.fetchall()
    print(res)

# 调用
insertdata()

查看数据库增加了2条数据(也可通过命令行窗口查看):
在这里插入图片描述

1.6、批量插入数据

def insertmany(database):
    conn = connect_database(database)
    # 创建游标对象
    cursor=conn.cursor()
    # 插入数据sql
    addmany_sql="insert into student(name,class)values(%s, %s)"
    addmany_values = (("huangzhong", "1"),("direnjie", "1"),("zhenji", "2"),("zhongwuyan", "3"))
    cursor.executemany(addmany_sql,addmany_values)
    # 提交
    conn.commit()
    select_showall(database, "select * from student")

insertmany('test')

查看数据库增加了多条数据(也可通过命令行窗口查看):
在这里插入图片描述

1.7、获取查询结果数据

常用方法:
fetchall() 获取所有的记录
fetchone()获取第一行记录
fetchmany(size)获取前几行记录

def select_showall(database,sql):
    conn=connect_database(database)
    # 创建游标对象
    cursor = conn.cursor()
    cursor.execute(sql)
   
    # 每次执行cur.fetchone()语句,游标都会向下走,所以不能同时查询
    # 查询所有记录
    # allrows = cursor.fetchall()
    # print(allrows)
    # 查询多条记录
    # manyrows = cursor.fetchmany(2)
    # print(manyrows)
    # 查询第一条数据
    onerow = cursor.fetchone()
    print(onerow)
    print(type(onerow))

# 调用
select_showall('test','select * from student where class="1"')

1.8、防sql注入,sql语句中一般用占位符传值

def select_data(database):
    conn=connect_database(database)
    # 创建游标对象
    cursor = conn.cursor()
    # 避免sql注入
    sql="select * from student where name=%s"
    svalue=("luban",)
    data=cursor.execute(sql,svalue)
    print(data)

select_data('test')

2、标准库 :mysql.connector

2.1、安装mysql-connector

终端输入:pip install mysql-connector -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.2、操作方法

实现的逻辑跟pysql一致,相同的操作,操作方法也一致

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV图像处理——按最小外接矩形剪切图像

引言 在图像处理过程中,提取感兴趣区域(ROI)并在其上进行处理后,往往需要将处理后的结果映射回原图像。这一步通常涉及以下几个步骤: 找到最小外接矩形:使用 cv::boundingRect 或 cv::minAreaRect 提取感兴…

Jenkins默认工作目录修改及迁移(Windows)

问题描述 如果Jenkins安装时安在C盘,那么默认的空间就是C:\ProgramData\Jenkins.jenkins,git下拉的项目会在该目录的workspace下,造成C盘空间增大。网上方法倒是有,五花八门,我这里是Windows,是有更简单的…

前端工程化14-git merge 以及 git rebase。

rebase会把当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像从公共分支又重新拉出来这个分支一样。 举例: 如果从 master 拉个feature分支出来,然后提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的…

VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection

VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection Abstract 摘要部分,作者首先指出了3D点云中目标检测的重要性,在自动驾驶导航、家政机器人以及增强现实和虚拟现实等多个领域有重要的作用。然后,提到了现有方法的…

C语言实现多种快速排序

目录 1.概念 2.快速排序hoare版本 2.1基本思想 2.2解释相遇处的值为何一定小于key 2.3hoare版本快速排序的实现 3.快速排序挖坑法 3.1基本思想 3.2挖坑法快速排序的实现 4. 快速排序前后指针版本 4.1基本思想 4.2快速排序前后指针版本实现 5.快速排序非递归版本 …

Linux下如何使用Curl进行网络请求

在Linux系统上,Curl是一个非常强大的网络请求工具,可以用于发送各种类型的HTTP请求,并获取响应结果。它支持常见的HTTP方法,如GET、POST、PUT、DELETE等,还支持HTTPS、FTP等不同协议。Curl提供了丰富的参数选项&#x…

多智能体新进展||斯坦福大学提出新模型‘Hypothetical Minds‘,让AI更懂人类思维

AI论文解读轻松掌握AI前沿技术进展,实时追踪AI动态,互动交流,共同成长进步 标题:Hypothetical Minds: Scaffolding Theory of Mind for Multi-Agent Tasks with Large Language Models 作者:Logan Cross, Violet Xia…

[数据集][图像分类]超声波肾脏结石分类数据集9416张2类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):9416 分类类别数:2 类别名称:["normal","stone&…

链表(哈希表,有序表)环形链表确定节点的方式

UnOrderedMap UnSortedMap --> C 哈希表(无序组织) 哈希表如果只有key 没有 value 是HashSet 哈希表如果有key 有 value 是HashMap 哈希表在使用的过程中所有的增删改查都是常数时间(比较大) 如果存放的是基础类型&#xf…

【网络】套接字(socket)编程——TCP版

接着上一篇文章:http://t.csdnimg.cn/GZDlI 在上一篇文章中,我们实现的是UDP协议的,今天我们就要来实现一下TCP版本的 接下来接下来实现一批基于 TCP 协议的网络程序,本节只介绍基于IPv4的socket网络编程 基于 TCP 的网络编程开…

Java基础入门15:算法、正则表达式、异常

算法(选择排序、冒泡排序、二分查找) 选择排序 每轮选择当前位置,开始找出后面的较小值与该位置交换。 选择排序的关键: 确定总共需要选择几轮:数组的长度-1。 控制每轮从以前位置为基准,与后面元素选择…

一招搞定异构联邦学习难题:FedKTL的超高效策略!

【联邦学习】在近年来的深度学习领域中备受关注,它通过在保证数据隐私的前提下,协同多个分散的设备或服务器进行模型训练。联邦学习技术能够在不集中数据的情况下,实现数据共享和模型优化,在医疗、金融和智能设备等领域取得了显著…

Linux|centos7|奇怪的知识|perf命令,系统运行瓶颈分析工具

前言: Linux perf 是 Linux 2.6 后内置于内核源码树中的性能剖析(profiling)工具,它基于事件采样,以性能事件为基础,针对 CPU 相关性能指标与操作系统相关性能指标进行性能剖析,可用于性能瓶颈查找与热点代…

http/sse/websocket 三大协议演化历史以及 sse协议下 node.js express 服务实现打字机案例 负载均衡下的广播实现机制

背景 自从2022年底chatgpt上线后,sse就进入了大众的视野,之前是谁知道这玩意是什么?但是打字机的效果看起来是真的很不错,一度吸引了很多人的趋之若鹜,当然了这个东西的确挺好用,而且实现很简单&#xff0…

Linux环境本地搭建开发工具箱It-Tools并实现公网环境远程使用

文章目录 前言1. 安装Docker2.本地安装部署it-tools3. it-tools工具箱功能—生成docker-compose文件4. 安装cpolar内网穿透5. 固定it-tools公网地址 前言 本篇文章,我们将以Docker方式将IT-Tools部署至本地Linux系统个人服务器,并且结合cpolar内网穿透工…

【无标题】mysql读写分离架构+MyCAT实现读写分离

1、读写分离的目的 数据库负载均衡: 当数据库请求增多时,单例数据库不能够满足业务 需求。需要进行数据库实例的扩容。多台数据库同时相 应请求。也就是说需要对数据库的请求,进行负载均衡 但是由于数据库服务特殊原因,数据库…

安卓用户专属福利:OfficeSuite中文高级版,让你的工作更轻松!

OfficeSuite – 世界顶级移动办公软件!Google Play商店下载最多的办公软件应用,迄今为止,智能手机平台上,功能最强大、兼容性最好的移动Office办公套件。创建,查看和编辑Word,Excel和PowerPoint文档&#x…

mysql主从数据库(5.7版本)与python的交互及mycat

mysql数据库基本操作: [rootm ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 解压压缩包 [rootm ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64 mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootm ~]# cp -r mysql-5.7.44-linu…

Ubuntu 批量杀死进程

ps -ef|grep python|grep server|grep -v grep|cut -c 9-16|xargs kill -9这个命令序列是一个在Linux或类Unix系统中使用的脚本片段,用于批量终止(强制杀死)所有与特定条件(这里是包含"python"和"wanghao"的&…

推荐浏览器爬虫插件:Instant Data Scraper 无需写一行代码

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…