Python小技巧——将CSV文件导入到MySQL数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Python小技巧——将CSV文件导入到MySQL数据库

接上篇,本期,我们就使用python中的mysql-connector-python库将CSV文件导入到mysql中,我们使用的文件是前面通过爬虫获得的一个关于各行业龙头公司的csv文件,详见上市公司财务报表数据汇总

下面,我用pandas加mysql-connector-python库将上述CSV文件添加到mysql中。具体代码为:


import pandas as pdimport mysql.connector
# 读取CSV文件csv_file = '各行业的龙头公司.csv'df = pd.read_csv(csv_file,encoding='gbk')
# 连接到MySQL数据库cnx = mysql.connector.connect(user='root', password='root',                              host='localhost', database='dragoncompany')cursor = cnx.cursor()
# 创建表(如果不存在)table_name ="Season_finance"create_table_query = f"""CREATE TABLE IF NOT EXISTS {table_name}(                        `股票代码`VARCHAR(20),                        `股票简称`VARCHAR(20),                        `交易市场`VARCHAR(20),                        `每股收益(元)`FLOAT,                         `营业总收入(元)`FLOAT,                        `净利润(元)`FLOAT,                        `资产收益率`FLOAT,                        `营收同比增长`FLOAT,                        `净利润同比增长`FLOAT,                        `每股净资产(元)`FLOAT,                        `每股经营现金流(元)`FLOAT,                        `销售毛利率`FLOAT,                        `营收季度环比增长率`FLOAT,                        `净利润季度环比增长率`FLOAT,                        `所处行业`VARCHAR(20),                        `报表季度`VARCHAR(20))"""cursor.execute(create_table_query)
# 将数据插入到表中for index,row in df.iterrows():    insert_query = f"INSERT INTO {table_name} (`股票代码`,`股票简称`,`交易市场`,`每股收益(元)`,`营业总收入(元)`,`净利润(元)`,`资产收益率`,`营收同比增长`,`净利润同比增长`,`每股净资产(元)`,`每股经营现金流(元)`,`销售毛利率`,`营收季度环比增长率`,`净利润季度环比增长率`,`所处行业`,`报表季度`) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"    cursor.execute(insert_query, tuple(row))
# 提交更改并关闭连接cnx.commit()cursor.close()cnx.close()

执行一下,用select在mysql中看看。

63cf4a7d31f237f345b61410d7a17316.png

已经写入,可能不太友好,我们用workbench看看,

78561d3aa9915c74bfb1bb083c25d91d.jpg


搞定了,里面有一些需要注意的坑,跟大家说一下:

Q1:运行中报错:

ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(20),

                       `股票简称`VARCHAR(20),

' at line 2


e70e8802529225f4d4c6bd1ddc4c256e.png

这个主要是符号问题导致的,字符串的符号不是“”、‘’,而是`。在键盘中是这个键

b9709a70c67a24e0a64f2ae209888bdf.jpg

Q2:运行中报错:

ProgrammingError: Not all parameters were used in the SQL statement


具体位置在:


c3e5dd2b93d7d2d124ed8021299126c4.png


这个错误源于在python3中连接数据库时,没有正确使用MySQL的占位符,虽然前面我们定义了每个列的数据类型,比如VARCHAR(20)、FLOAT等,但在具体执行过程中,无论是数字(包括整数和浮点数)、字符串、日期时间或者其他任意类型,都应该使用%s占位符。

因此,把上面的%f改成%s就解决这个问题了。



好了,本期代码完美解决了将CSV文件导入到MySQL数据库中,其中还是有一些需要注意的环节,大家试试吧?

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
114 68
|
1天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
67 10
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
12天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
33 5
|
16天前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
|
26天前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
|
26天前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
21 2
|
1月前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接22.bijius.com
自动化数据预处理:使用Python库(如Pandas)自动清洗、转换和准备数据,为机器学习模型提供高质量输入。 实时数据处理:集成Apache Kafka或Amazon Kinesis等流处理系统,实现实时数据更新和分析。
|
29天前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
57 1
|
1月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
85 1
|
1月前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接2a.bijius.com
Python与SQL的集成是现代数据科学和工程实践的核心。通过有效的数据查询、管理与自动化,可以显著提升数据分析和决策过程的效率与准确性。随着技术的不断发展,这种集成的应用场景将更加广泛,为数据驱动的创新提供更强大的支持。
下一篇
无影云桌面