利用Python将csv文件数据存入MySQL
方法一:pandas读取csv文件,使用pymysql
直接执行SQL语句
import pandas as pd
import pymysql
# CSV文件路径
csv_file_path = 'your_csv_file.csv'
# MySQL数据库连接信息
mysql_host = 'your_mysql_host'
mysql_user = 'your_mysql_user'
mysql_password = 'your_mysql_password'
mysql_db = 'your_database_name'
mysql_table = 'your_table_name'
# 读取CSV文件到DataFrame
df = pd.read_csv(csv_file_path)
# 建立MySQL数据库连接
connection = pymysql.connect(
host=mysql_host,
user=mysql_user,
password=mysql_password,
database=mysql_db
)
# 创建游标
cursor = connection.cursor()
# 创建表格(如果不存在)
create_table_query = f'''
CREATE TABLE IF NOT EXISTS {mysql_table} (
{', '.join([f'{col} TEXT' for col in df.columns])}
)
'''
cursor.execute(create_table_query)
# 插入数据
for index, row in df.iterrows():
insert_query = f"INSERT INTO {mysql_table} VALUES {tuple(row.values)}"
cursor.execute(insert_query)
# 提交更改并关闭连接
connection.commit()
cursor.close()
connection.close()
方法二:pandas读取csv文件,使用sqlalchemy
创建数据库连接
SQLAlchemy
是一个Python SQL工具包和对象关系映射(ORM)库,用于在Python应用程序中连接和与关系型数据库进行交互。它提供了一种高层次的抽象,使得开发者可以使用Python对象而不是直接使用SQL语句进行数据库操作。
import pandas as pd
from sqlalchemy import create_engine
# CSV文件路径
csv_file_path = 'your_csv_file.csv'
# MySQL数据库连接信息
mysql_host = 'your_mysql_host'
mysql_user = 'your_mysql_user'
mysql_password = 'your_mysql_password'
mysql_db = 'your_database_name'
mysql_table = 'your_table_name'
# 读取CSV文件到DataFrame
df = pd.read_csv(csv_file_path)
# 建立MySQL数据库连接
engine = create_engine(f'mysql+pymysql://{mysql_user}:{mysql_password}@{mysql_host}/{mysql_db}')
# 将DataFrame写入MySQL数据库
df.to_sql(mysql_table, con=engine, if_exists='replace', index=False)
# 关闭数据库连接
engine.dispose()