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

本文涉及的产品
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 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数据库中,其中还是有一些需要注意的环节,大家试试吧?

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
7月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
865 7
|
8月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
8月前
|
SQL 关系型数据库 MySQL
如何将Excel表的数据导入RDS MySQL数据库?
本文介绍如何通过数据管理服务DMS将Excel文件(转为CSV格式)导入RDS MySQL数据库,涵盖建表、编码设置、导入模式选择及审批执行流程,并提供操作示例与注意事项。
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
941 77
|
8月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
703 0
|
10月前
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
8月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1281 102
|
8月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
461 104

推荐镜像

更多