如何使用Python将CSV文件导入到MySQL数据库中?

  • Post category:Python

如何使用Python将CSV文件导入到MySQL数据库中?

将CSV文件导入到MySQL数据库中是一个常见的任务,Python提供了许多库来完成这个任务。在本攻略中,我们将使用pandasmysql-connector-python库来完成这个任务。以下是使用Python将CSV文件导入到MySQL数据库中的完整攻略。

步骤1:安装必要的库

在使用Python将CSV文件导入到MySQL数据库之前,需要安装pandasmysql-connector-python库。可以使用以下命令在命令行中安装这些库:

pip install pandas mysql-connector-python

步骤2:连接到MySQL数据库

在Python中,可以使用mysql-connector-python库连接到MySQL数据库。以下是连接到MySQL数据库的基本语法:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

在上面的语法中,localhost是MySQL服务器的主机名,yourusername是数据库的用户名,yourpassword是连接数据库的密码,mydatabase是要连接的数据库名称。

步骤3:读取CSV文件

在Python中,可以使用pandas库读取CSV文件。以下是读取CSV文件的基本语法:

import pandas as pd

df = pd.read_csv('filename.csv')

在上面的语法中,filename.csv是要读取的CSV文件的文件名。

步骤4:将数据插入到MySQL数据库中

在Python中,可以使用pandasmysql-connector-python库将数据插入到MySQL数据库中。以下是将数据插入到MySQL数据库中的基本语法:

import pandas as pd
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

df = pd.read_csv('filename.csv')

mycursor = mydb.cursor()

for index, row in df.iterrows():
    sql = "INSERT INTO table_name (column1, column2, column3) VALUES (%s, %s, %s)"
    val = (row['column1'], row['column2'], row['column3'])
    mycursor.execute(sql, val)

mydb.commit()

在上面的语法中,table_name是要插入数据的表名,column1column2column3是表的列名。df.iterrows()方法用于遍历CSV文件中的每一行,mycursor.execute()方法用于执行SQL语句,mydb.commit()方法用于提交更改。

示例1

在这个示例中,我们将使用Python将一个名为data.csv的CSV文件导入到MySQL数据库中。CSV文件包含三列数据:nameagecity。我们将创建一个名为people的表,并将CSV文件中的数据插入到该表中。

以下是Python代码:

import pandas as pd
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

df = pd.read_csv('data.csv')

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE people (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT, city VARCHAR(255))")

for index, row in df.iterrows():
    sql = "INSERT INTO people (name, age, city) VALUES (%s, %s, %s)"
    val = (row['name'], row['age'], row['city'])
    mycursor.execute(sql, val)

mydb.commit()

在上面的代码中,我们使用pandas库读取名为data.csv的CSV文件。然后,我们使用mysql-connector-python库连接到MySQL数据库。接下来,我们使用mycursor.execute()方法创建一个名为people的表。最后,我们使用for循环遍历CSV文件中的每一行,并使用mycursor.execute()方法将数据插入到people表中。

示例2

在这个示例中,我们将使用Python将一个名为sales.csv的CSV文件导入到MySQL数据库中。CSV文件包含四列数据:dateproductpricequantity。我们将创建一个名为sales的表,并将CSV文件中的数据插入到该表中。

以下是Python代码:

import pandas as pd
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

df = pd.read_csv('sales.csv')

mycursor = mydb.cursor()

mycursor.execute("CREATE TABLE sales (id INT AUTO_INCREMENT PRIMARY KEY, date DATE, product VARCHAR(255), price FLOAT, quantity INT)")

for index, row in df.iterrows():
    sql = "INSERT INTO sales (date, product, price, quantity) VALUES (%s, %s, %s, %s)"
    val = (row['date'], row['product'], row['price'], row['quantity'])
    mycursor.execute(sql, val)

mydb.commit()

在上面的代码中,我们使用pandas库读取名为sales.csv的CSV文件。然后,我们使用mysql-connector-python库连接到MySQL数据库。接下来,我们使用mycursor.execute()方法创建一个名为sales的表。最后,我们使用for循环遍历CSV文件中的每一行,并使用mycursor.execute()方法将数据插入到sales表中。

以上是使用Python将CSV文件导入到MySQL数据库中的完整攻略,包括连接到MySQL数据库、读取CSV文件、将数据插入到MySQL数据库中等步骤。同时,我们提供了两个示例,以便更好地理解如何使用Python将CSV文件导入到MySQL数据库中。