使用Python的pandas库读取CSV文件并保存至MySQL数据库需要经历以下步骤:
1. 安装依赖
在开始之前,需要先安装相关依赖库,包括pandas和MySQLdb。可以通过以下命令进行安装:
pip install pandas
pip install MySQL-python
2. 导入依赖
在Python脚本中导入需要使用的依赖库:
import pandas as pd
import MySQLdb
3. 读取CSV文件
使用pandas库中的read_csv方法读取CSV文件,将其存储在一个pandas的dataframe对象中:
data = pd.read_csv('filename.csv')
其中,filename.csv
为待读取的CSV文件路径。
4. 连接MySQL数据库
使用MySQLdb库连接MySQL数据库:
db = MySQLdb.connect('host', 'username', 'password', 'database', charset='utf8')
其中,host
为MySQL服务器的地址,username
和password
为登录MySQL所需的用户名和密码,database
为要连接的数据库名称,charset
为字符集设置,这里使用的是UTF-8字符集。
5. 创建MySQL游标
使用创建的数据库连接创建MySQL游标:
cursor = db.cursor()
6. 创建数据表
使用游标创建数据表。在这个例子中,我们将CSV文件的第一行作为数据表的列名。
cols = ','.join(list(data.columns))
table_name = 'table_name'
create_table_query = "CREATE TABLE {} ({})".format(table_name, cols)
cursor.execute(create_table_query)
其中,table_name
为要创建的数据表名称。
7. 将CSV数据写入MySQL数据库
使用for循环将dataframe中的数据逐行写入MySQL数据库:
for i,row in data.iterrows():
values = ','.join(['"' + str(x) + '"' for x in row])
insert_query = "INSERT INTO {} ({}) VALUES ({})".format(table_name, cols, values)
cursor.execute(insert_query)
db.commit()
这个例子中,我们使用iterrows()
方法将dataframe中的每一行转换成逐一可操作的元素。在每一次循环中,我们将所有元素用逗号拼接成一个字符串列表,用join
方法将它们连接到查询语句的VALUES子句中。
8. 关闭数据库连接
在完成将CSV数据导入到MySQL数据库的操作后,使用以下代码关闭数据库连接:
cursor.close()
db.close()
至此,使用Python的pandas库读取CSV文件并保存至MySQL数据库的完整攻略完毕。
这里提供一个具体的示例:
示例1:使用pandas读取CSV文件并保存至MySQL数据库
我们先准备一个名为students.csv
的示例数据。数据表结构如下:
student_id, name, age, gender, grade
1, Alice, 18, F, A
2, Bob, 17, M, B
3, Cindy, 19, F, A
4, David, 18, M, C
然后使用如下代码将CSV文件的数据导入到MySQL数据库:
import pandas as pd
import MySQLdb
# 读取CSV文件并存储到pandas的dataframe对象中
data = pd.read_csv('students.csv')
# 连接MySQL数据库
db = MySQLdb.connect('localhost', 'root', 'password', 'test', charset='utf8')
# 创建MySQL游标
cursor = db.cursor()
# 创建数据表
cols = ','.join(list(data.columns))
table_name = 'students'
create_table_query = "CREATE TABLE {} ({})".format(table_name, cols)
cursor.execute(create_table_query)
# 将CSV数据写入MySQL数据库
for i,row in data.iterrows():
values = ','.join(['"' + str(x) + '"' for x in row])
insert_query = "INSERT INTO {} ({}) VALUES ({})".format(table_name, cols, values)
cursor.execute(insert_query)
db.commit()
# 关闭数据库连接
cursor.close()
db.close()
以上代码将创建一个名为students
的数据表,并将CSV文件中的数据导入到该数据表中。
示例2:使用pandas读取CSV文件中指定的列并保存至MySQL数据库
在某些情况下,我们可能只需要读取CSV文件中的部分列,并将其保存到MySQL数据库中。以下示例演示如何使用pandas库指定读取CSV文件中的列,并将其导入到MySQL数据库中。假设CSV文件中有四列数据,我们只需要读取前三列,可以按照以下方式进行:
import pandas as pd
import MySQLdb
# 读取CSV文件的指定列并存储到pandas的dataframe对象中
data = pd.read_csv('students.csv', usecols=['student_id', 'name', 'age'])
# 连接MySQL数据库
db = MySQLdb.connect('localhost', 'root', 'password', 'test', charset='utf8')
# 创建MySQL游标
cursor = db.cursor()
# 创建数据表
cols = ','.join(list(data.columns))
table_name = 'students'
create_table_query = "CREATE TABLE {} ({})".format(table_name, cols)
cursor.execute(create_table_query)
# 将CSV数据写入MySQL数据库
for i,row in data.iterrows():
values = ','.join(['"' + str(x) + '"' for x in row])
insert_query = "INSERT INTO {} ({}) VALUES ({})".format(table_name, cols, values)
cursor.execute(insert_query)
db.commit()
# 关闭数据库连接
cursor.close()
db.close()
以上代码中,我们指定了pandas的read_csv()
方法的usecols
参数,只读取student_id
、name
和age
这三列数据。接下来,我们将读取到的数据存储在名为students
的数据表中。
这就是使用Python的pandas库读取CSV文件并保存至MySQL数据库的完整攻略,希望可以帮助到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用python的pandas库读取csv文件保存至mysql数据库 - Python技术站