python和MySQL的基础使用和数据的插入导出

news2025/1/20 3:46:00

一.基础使用

第三方库pymysql

除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库。在Python中,使用第三方库:pymysql来完成对MySQL数据库的操作。

安装

创建到MySQL的数据库链接

具体代码如下

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(
    host='localhost',# localhost表示自己的电脑
    user='root',
    password='685014',#这个密码是当时下载mysql自己设置的用户密码
    port=3306#端口默认是3306
)
#打印MySQL数据库软件信息
print(conn.get_server_info())

输出结果

执行SQL语句

演示

执行非查询性质的SQL语句:

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(
    host='localhost',# localhost表示自己的电脑
    user='root',
    password='685014',#这个密码是当时下载mysql自己设置的用户密码
    port=3306#端口默认是3306
)
#打印MySQL数据库软件信息
print(conn.get_server_info())
#执行非查询性质的SQL语句
#获取游标对象
cursor=conn.cursor()
conn.select_db("py_sql")#选择数据库
#使用游标对象,执行SQL语句
cursor.execute("create table test_pymysql(id int,info varchar(255));")
#关闭链接
conn.close()

结果

注意,在用python写SQL执行语句时,最后的‘;’分号可以不写

执行查询性质的SQL语句:

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(
    host='localhost',# localhost表示自己的电脑
    user='root',
    password='685014',#这个密码是当时下载mysql自己设置的用户密码
    port=3306#端口默认是3306
)
#执行查询性质的SQL语句
#获取游标对象
cursor=conn.cursor()
conn.select_db("world")#选择数据库
#使用游标对象,执行SQL语句
cursor.execute("select * from student")
#获取查询结果
result:tuple=cursor.fetchall()
for i in result:
    print(i)

结果

小结

1.Python中使用什么第三方库来操作MySQL?如何安装?

使用第三方库为:pymysql

安装:pip install pymysql

2.如何获取链接对象?

  • from pymysql import Connection导包

  • Connection(主机,端口,账户,密码)即可得到链接对象·链接对象.close()关闭和MySQL数据库的连接

3.如何执行SQL查询

通过连接对象调用cursor()方法,得到游标对象

  • 游标对象.execute()执行SQL语句

  • 游标对象.fetchall()得到全部的查询结果封装入元组内

二.数据插入

思考

如图所示代码,经过执行是无法将数据插入到数据表student中的。这是为什么呢?

pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即,需要通过代码“确认”这种更改行为。

通过链接对象.commit()即可确认此行为。

自动commit

如果不想手动commit确认,可以在构建链接对象的时候,设置自动commit的属性。

如图代码进行设置,即可自动提交无需手动commit了。

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(
    host="localhost",
    user="root",
    password="685014",
    port=3306,
    autocommit=True

)

小结

1.什么是commit提交?

pymysql库在执行对数据库有修改操作的行为时,是需要通过链接对象的commit成员方法来进行确认的。只有确认的修改,才能生效。

  1. 如何自动提交呢?

三.实例操作

    • 利用python把数据导入MySQL中

这两份数据,一份是json数据,一份是普通的文本

我在之前文章中就处理过这两份文件,需要了解的可点击“python面向对象做数据分析实例”所用的数据集也在这篇文章里面

这次我们就直接导入

操作

本次需求开发我们需要新建一个数据库来使用,数据库名称:py_sql基于数据结构,可以得到建表语句:

代码

#实例1 将数据导入mysql中
from shujufenxi import file_define
from shujufenxi import data_define
from pymysql import Connect

text_file_reader= file_define.TextFileReader("D:/2011年1月销售数据.txt")
json_file_reader= file_define.JsonFileReader("D:/2011年2月销售数据JSON.txt")

jan_data:list[data_define.Record]=text_file_reader.read_data()
fed_data:list[data_define.Record]=json_file_reader.read_data()
#把两个月的数据合并为一个list来存储
all_data:list[data_define.Record]= jan_data + fed_data

#获取到MySQL数据库的连接对象
conn=Connect(
    host="localhost",
    user="root",
    password="685014",
    port=3306,
    autocommit=True

)
#获取游标对象
cursor=conn.cursor()
#选择数据库
conn.select_db("py_sql")
#组织SQL语句
for record in all_data:
    sql=f"insert into orders(order_data,order_id,money,province)" \
        f"values('{record.data}','{record.order_id}','{record.money}','{record.province}')"
    #执行SQL语句
    cursor.execute(sql)

#关闭连接
conn.close()

2.利用python把数据从MySQL中导出

法一

#第一种方法(输出元组)
from pymysql import Connect

conn=Connect(
    host="localhost",
    user="root",
    password="685014",
    port=3306
)

cursor=conn.cursor()

conn.select_db("py_sql")

cursor.execute("select  order_data,order_id,money,province  from orders limit 12")
record=cursor.fetchall()
for i in record:
    print(i)
print(record)

结果是

法二

#实例2 把数据导出(这个是老方法,会报错但是也可以正常输出)
from pymysql import Connect
import pandas as pd
#获取到MySQL数据库的连接对象
conn=Connect(
    host="localhost",
    user="root",
    password="685014",
    port=3306,
    autocommit=True

)
#选择数据库
conn.select_db("py_sql")
#获取游标对象
cursor=conn.cursor()
#组织SQL语言
sql=f"select order_data,order_id,money,province from orders limit 12;"
# #执行sql语言

record=pd.read_sql(sql,conn)
print(record)

结果是

法三(推荐使用)

#新方法 推荐使用
import sqlalchemy
import pandas as pd

conn=sqlalchemy.create_engine("mysql+pymysql://root:685014@localhost:3306/py_sql")
sql=f"select order_data,order_id,money,province from orders limit 12;"#这里那个f写不写都可以

record=pd.read_sql(sql,conn)
print(record)

结果是

注:实例所用数据集请点击“python面向对象做数据分析实例”

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

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

相关文章

LVS+Keepalived+Nginx宏观整体结构与关键问答

视频链接:4-2 为什么要使用 LVS Nginx?_哔哩哔哩_bilibili ———————————————————————————————————————————————————————— 1. 问题: 为什么要使用LVS Nginx?&#xf…

C语言刮刮乐(掩码图的范例)

程序简介 这个程序模拟了刮刮乐的刮卡操作,按下鼠标左键并移动可以刮开刮卡层。 刮卡操作是通过掩码图实现的,一张隐藏的待刮开背景图,一张掩码图。 刮卡的时候,是在黑色的掩码图上画线,显示的时候,通过…

官方正品 | Ultralytics YOLOv8算法来啦(尖端SOTA模型)

🚀🚀🚀卷王之王 | Ultralytics YOLOv8 算法来啦!!✨✨✨ 一、前言简介 🎄🎈 📚 代码地址:卷王之王 | YOLOv8代码下载地址 📚 详细文档:https://…

代码随想录算法训练营第十四天字符串 java :二叉树理论基础 144前序遍历 145后续遍历94 中序遍历

系列文章目录 第十一天笔记 文章目录系列文章目录前言1、二叉树理论基础1.1二叉树的种类1.1 如何区分二叉树的遍历方式1.2 如何定义二叉树节点2 递归遍历2.1**前序遍历 AC代码**2.2**后序遍历 AC代码**2.3 **中序遍历 AC代码**3 迭代法4 层次遍历总结**什么是List<List <…

组态王软件与S7-1200无线MODBUS通信方案详解

本方案是组态软件与西门子 S7-1200进行无线 MODBUS 通信的实现方法。此方案可以作为西门子 S7-1200与组态软件的无线 MODBUS 通信实例。在本方案中采用了西门子PLC专用无线通讯终端DTD434MC&#xff0c;作为实现无线通讯的硬件设备。 一、方案概述 组态王配置为标准 MODBUS 主…

基础面试问题

在Java中获取当前的工作目录System.getProperty("user.dir")public class Test {public static void main(final String[] args) {final String dir System.getProperty("user.dir");System.out.println("current dir " dir);} }获取一定范围…

Redis01之Windows版本的Redis安装配置

目录 0. 学习网址 https://www.w3cschool.cn/redis/https://www.w3cschool.cn/redis/ 1. Redis简介 2. 下载 3. 安装和配置 3.1 window(略...) 3.2 linux(CentOS) 4. Redis支持五种数据类型 5.通过命令操作redis 0. 学习网址 https://www.w3cschool.cn/redis/http…

一文搞懂CPU如何控制I/O设备

1 接口和设备&#xff1a;经典适配器模式 输入输出设备不只是一个设备。大部分输入输出设备&#xff0c;都有&#xff1a; 它的接口&#xff08;Interface&#xff09;实际的I/O设备&#xff08;Actual I/O Device&#xff09; 硬件设备并非直接接入到总线上和CPU通信&#…

UOS 录制电脑播放的音频 / 内录音频

Windows 里面有一个“立体声混音”&#xff0c;可以内录电脑播放的音频&#xff0c;而不受到外界噪音的干扰。前段时间接到反馈说 UOS 的设置里面的音频输入里面没有可以选择的设备&#xff0c;这里就稍微探索了一下&#xff0c;发现 UOS 也是可以配置内录的。这里参考了一下这…

网络基础(一)

网络基础&#xff08;一&#xff09;计算机网络背景网络发展独立模式: &#xff08;计算机之间相互独立&#xff09;网络互联: ( 多台计算机连接在一起, 完成数据共享)局域网LAN: (计算机数量更多了, 通过交换机和路由器连接在一起);广域网WAN: &#xff08;将远隔千里的计算机…

vue入门到精通(一)

一、vue简介 Vue是一款用于构建用户界面的 JavaScript 框架。 它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。 无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 二、vue3选项式…

Linux编译器-gcc/g++使用

目录 1. 背景知识 2. gcc如何完成 2.1 预处理(进行宏替换) 2.2 编译&#xff08;生成汇编&#xff09; 2.3 汇编&#xff08;生成机器可识别代码&#xff09; 2.4 链接&#xff08;生成可执行文件或库文件&#xff09; 3 函数库 3.1 分类 3.2 图解 4 gcc选项 1. 背景知…

开源工具系列2:Trivy

在云原生安全的场景中&#xff0c;一个常见的场景就是对漏洞和配置进行扫描&#xff0c;以发现整个 K8s 环境的安全问题。今天我们来介绍一个高效的扫描工具Trivy。 Trivy 是什么 Trivy&#xff08;tri 发音为 trigger&#xff0c;vy 发音为 envy&#xff09;是一个简单而全面…

QT 学习笔记(十七)

文章目录一、多线程简介1. 基础知识2. 多线程的优缺点及注意事项二、多线程详解1. 背景案例2. 通过多线程对背景案例进行优化3. 方法一&#xff1a;多线程的创建使用&#xff08;QT 4.7 以前&#xff09;3.1 方法一的创建步骤3.2 方法一的具体实现及实现代码4. 方法二&#xff…

Android Hook之Frida安装使用

目录Frida安装安装frida-serverfrida-server配置和启动Frida Hook实例1&#xff1a;实例2&#xff1a;Frida 常用命令Frida 是一个动态检测框架&#xff0c;允许开发人员在 Windows、macOS、Linux、iOS 和 Android 上的原生应用程序中注入 JavaScript 或 Python 脚本。该框架可…

Spring复习(二)

FactoryBean FactoryBean是一个接口&#xff0c;需要创建一个类实现该接口 package com.mao.pojo;import org.springframework.beans.factory.FactoryBean;public class StudentFactoryBean implements FactoryBean {//getObject方法将对象交给Spring容器来管理Overridepubli…

Go web开发

使用 Gin-Plus 框架快速进行 web 开发 一、前言 安装 Get go get github.com/archine/gin-plus/v2v2.0.0Mod # go.mod文件加入下面的一条 github.com/archine/gin-plus/v2 v2.0.0# 命令行在该项目目录下执行 go mod tidy二、项目使用 1、启动入口 定义 main 文件&#xf…

来自一位双非本科大二学生的?自我救赎:堕落——蜕变

回望2022&#xff1a;获得&#xff1f;&#xff1a;失去&#xff1b;开心&#xff1f;&#xff1a;难过&#xff1b;伤心&#xff1f;&#xff1a;释怀 先提一句&#xff0c;总结2022&#xff0c;有后悔、不甘&#xff1b;有开心、感动&#xff1b;2022结束&#xff0c;更多的是…

springboot 2.6.6读不到nacos上的配置文件

搭建了一个微服务项目 spring boot 版本&#xff1a;2.6.6 spring cloud 版本&#xff1a;2021.0.1 spring cloud alibaba 版本&#xff1a;2021.0.1.0 遇到的问题无论是在application.yml还是在bootstrap.properties属性文件里配置服务中心相关的的信息都不能读取nacos上的…

LeetCode[215]数组中的第K个最大元素

难度&#xff1a;中等题目&#xff1a;给定整数数组 nums和整数 k&#xff0c;请返回数组中第 k个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k个最大的元素&#xff0c;而不是第 k个不同的元素。你必须设计并实现时间复杂度为 O(n)的算法解决此问题。示例 1:输…