Python 将CSV文件数据存入Mysql数据库

2023-11-13

我们有一个名为student.csv的文件,里面包含有学生的学号、姓名、性别等信息,想要基于Python将CSV文件中的信息写入MySQL数据库的student_info表中。

student.csv
下面给出具体实现代码。

首先引入所需要的库。

import pandas as pd
import pymysql
import csv
from collections import namedtuple

1、get_data函数打开文件csv文件, 通过open方法打开文件(python文件实现了迭代器协议),然后使用with语句来迭代读取csv文件,然后存入命名元组,可以使用列名作为下标访问元组中的内容。

def get_data(file_name):
    with open(file_name) as f:
        f_csv = csv.reader(f)
        headings = next(f_csv)
        Row = namedtuple('Row', headings)
        for r in f_csv:
            yield Row(*r)

2、execute_sql,使用上下文管理器包装execute执行语句

def execute_sql(conn, sql):
    with conn.cursor() as cur:
        cur.execute(sql)
        print('执行成功')

3、main主函数,连接数据库,执行SQL语句,提交commit,关闭连接。

def main()
    conn = pymysql.connect(
           host='xxx.xxx.xxx.xxx',
           user='root',
           passwd='密码',
           db='数据库名称', 
           port = 3306,
           charset="utf8")

	# 将CSV文件中的数据插入MySQL数据表中
	SQL_FORMAT = """insert into student_info values('{0}', '{1}', '{2}')"""
	conn.autocommit(1)
	for t in get_data('./data/student.csv'):
	    print(t.id, t.name, t.gender)
	    sql = SQL_FORMAT.format(t.id, t.name, t.gender)
	    print(sql)
	    execute_sql(conn, sql)
	conn.commit()  # 提交到数据库
	conn.close()  # 关闭数据库服务
if __name__ == '__main__':
    main()

执行上述代码,查看MySQL数据表中的内容,发现数据被成功插入student_info 表中。
在这里插入图片描述

基于Python查询MySQL数据表

conn = pymysql.connect(
       host='xxx.xxx.xxx.xxx',
       user='root',
       passwd='密码',
       db='数据库名称', 
       port = 3306,
       charset="utf8")

SQL_FORMAT = """select * from student_info where name='{0}'"""
sql_1 = SQL_FORMAT.format('Mary')
print('sql_1:', sql_1)

sql_2 = 'select * from student_info where name=%s'
print('sql_2:', sql_2)

with conn.cursor() as cur:  # cursor对象用于执行sql语句
    cur.execute(sql_1)
    res_1 = cur.fetchall() # 获取结果及的所有数据     
    print('sql_1执行结果:', res_1)
    
    cur.execute(sql_2, 'Jack') 
    res_2 = cur.fetchall() # 获取结果及的所有数据     
    print('sql_12执行结果:', res_2)
conn.commit()  # 提交
conn.close()  # 关闭服务

输出结果:

sql_1: select * from student_info where name='Mary'
sql_2: select * from student_info where name=%s
sql_1执行结果: ((1, 'Mary', 'F'),)
sql_12执行结果: ((2, 'Jack', 'M'),)

【参考博客】:

  1. Python将csv文件导入到mysql数据库
  2. Python写入MySQL数据库的三种方式详解
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 将CSV文件数据存入Mysql数据库 的相关文章

  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • Pandas 日期时间格式

    是否可以用零后缀表示 pd to datetime 似乎零被删除了 print pd to datetime 2000 07 26 14 21 00 00000 format Y m d H M S f 结果是 2000 07 26 14
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • 日期时间与时间戳字段

    我是 MySQL 数据库的新手 您是否建议在表创建中使用日期时间或时间戳字段以及原因 我正在使用 MySQL 5 7 和 innodb 引擎 Thanks 我会用TIMESTAMP对于任何需要自动管理的事情 因为它支持诸如ON UPDATE
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构

    我想在 Python 中更新 YAML 文件值 而不丢失 Python 中的格式和注释 例如我想改造 YAML 文件 value 456 nice value to value 6 nice value 界面类似于 y yaml load
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

    我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐

  • DMNet复现(二)之模型篇:Density map guided object detection in aerial image

    以前用Swin Transformer Tiny训练了40epoch的 官方用的Faster RCNN 这里先用Swin Transformer Tiny进行测试 模型训练 采用基于MMDetection的框架Swin Transforme
  • I2C的C语言实现

    I2C的C语言实现 起始信号 停止信号 应答信号ACK与非应答信号NACK 等待ACK信号 发送一个字节 读取一个字节 单字节写入 读取 连续写入 读取 起始信号 当SCL为高期间 SDA由高到低的跳变 void I2C Start voi
  • 在Mac OS环境安装Composer

    简介 Composer 是 PHP 的一个依赖管理工具 安装流程 打开终端 输入下面指令 进入用户根目录 cd 执行安装指令 php r readfile https getcomposer org installer gt compose
  • 2023年数学建模:基于模拟退火算法的旅行商问题求解

    订阅专栏后9月比赛期间会分享思路及Matlab代码 目录 一 模拟退火算法的基本原理 二 实战案例 旅行商问题
  • YoloV8改进策略:新出炉的EMA注意力机制助力YoloV8更加强大

    本次改进使用最新的注意力机制EMA改进YoloV8 我们一起来看看效果吧 论文翻译 摘要 https arxiv org ftp arxiv papers 2305 2305 13563 pdf 在各种计算机视觉任务中 通道或空间注意力机制
  • Python3 数据挖掘系统搭建(四)

    上一节学习了数据清洗如何对内容去重 这一节继续学习一个完整的挖掘系统是怎么构建的 以搜索百度新闻数据为例 首先要建立评分系统需要创建一个数据表 起名为article吧 字段如下图 字段有company title href source d
  • 6-Mysql子查询,多表连接(内连接,外连接,交叉连接)

    子查询 select from 学生表 查询高技2班的学生信息 select from 班级表 1 子查询当做查询条件的一部分 select from 学生表 where 班级ID in select 班级ID from 班级表 where
  • java heap space默认值_java heap space解决方法

    java heap space解决方法 在JVM中如果98 的时间是用于GC Garbage Collection 且可用的 Heap size 不足2 的时候将抛出异常信息 java lang OutOfMemoryError Java
  • OpenGL 7.测试框架,批渲染

    测试功能基类 本节搭建一个简单的测试框架 实现在窗口上显示一个菜单栏 点击不同的选项 进入不同的功能 附加目录中添加src 方便添加头文件 新建目录如下 测试基类 Test h 测试菜单TestMenu 用于管理所有的测试 pragma o
  • matlab 波形仿真,MATLAB仿真波形的处理

    MATLAB仿真波形的处理 由会员分享 可在线阅读 更多相关 MATLAB仿真波形的处理 14页珍藏版 请在人人文库网上搜索 1 示波器波形的处理1 示波器介绍首先介绍示波器的基本功能 对Simulink Model 搭建的模型 进行仿真之
  • C#知识系列:paritial class必须是同一个程序集,否则引用别的程序集的paritial class会报错

    C 知识系列 paritial class必须是同一个程序集 否则引用别的程序集的paritial class会报错 提示 A程序集的xxxx cs与B程序集的xxxx cs冲突 请使用A程序集的xxxx cs
  • RTK系列【1】小日子RTKLIB 2.4.3 b34 源码与算法研究(单点定位调试)

    小日子RTKLIB源码研究 1 VS2017下发现的一些bug 1 1 SPP 单点定位 1 1 1 问题描述 Run Time Check Failure 3 The variable dion is being used without
  • 客户下单软件

    一 订货系统后台能否通过手机进行操作 问 订货系统后台能否通过手机进行操作 我们购买订货系统后能不能通过手机操作订货企业后台 答 订货系统有手机版本和APP 可通过手机操作 二 订货系统企业后台能否及时了解到客户的欠款信息 小程序公司订单管
  • cocosCreator IOS 微信授权

    官方文档 iOS接入指南 微信开放文档 1 把你的项目构建ios版包 使用Xcode 打开 2 首先呢 我们进入微信开发者平台 选择到官方的ios 接入指南项 点击 资源下载页 下载 demo 然后把demo 中的SDKexport 文件直
  • 一起学nRF51xx 16 -  adc

    前言 nRF51的ADC设计得比较简单 它有几个可配置的部分 1 PSEL pinselection nRF51系列芯片有8个模拟输入通道 并且这几个脚是固定的 不能像GPIO那样可以重新映射 PSEL用来选择需要采集模拟电压的通道 当该通
  • C语言实现动态通讯录(附带文件保存)

    作者简介 嵌入式入坑者 与大家一起加油 希望文章能够帮助各位 个人主页 rivencode的个人主页 系列专栏 玩转C语言 推荐一款模拟面试 刷题神器 从基础到大厂面试题 点击跳转刷题网站进行注册学习 C语言实现动态通讯录 一 动态通讯录的
  • 「第五篇」全国电子设计竞赛-电源题设计方案总结

    点击上方 大鱼机器人 选择 置顶 星标公众号 福利干货 第一时间送达 0 前言 许多朋友给我留言说 有没有电源题目的一些文章可以参考 为了给大家找更多的关于电赛相关的经验贴 我在网上疯狂游泳 不断筛选 终于在知乎上看到一位优秀的大佬 刘阳
  • 新一代MacBook Pro外观、屏幕、性能全面升级

    去年十一月 苹果正式推出了搭载M1自研处理器的MacBook Pro 13 3 M1设备的的出色性能饱受消费者赞赏 有业内人士称 苹果将会在近两年的时间将自家的PC产品全部更换为自研处理器 近日 就有媒体曝光了一款2021款MacBook
  • Ubuntu—vi编辑器的使用一

    vi编辑器 vi是Linux中最基本的编辑器 但vi编辑器在系统管理 服务器配置工作中永远都是无可替代的 vi编辑器的使用 vi有以下三种模式 命令行模式 用户在用vi编辑文件时 最初进入的是该模式 可以进行复制 粘贴等操作 插入模式 进行
  • Python 将CSV文件数据存入Mysql数据库

    我们有一个名为student csv的文件 里面包含有学生的学号 姓名 性别等信息 想要基于Python将CSV文件中的信息写入MySQL数据库的student info表中 下面给出具体实现代码 首先引入所需要的库 import pand