📜  如何使用Python将 CSV 文件导入 SQLite 数据库表?

📅  最后修改于: 2022-05-13 01:55:21.011000             🧑  作者: Mango

如何使用Python将 CSV 文件导入 SQLite 数据库表?

在本文中,我们将讨论如何使用Python将 CSV 文件内容导入 SQLite 数据库表。

方法:

  • 首先,我们导入csv模块(用于处理 csv 文件)和sqlite3模块(用于填充数据库表)。
  • 然后我们使用 sqlite3.connect() 方法连接到我们的极客数据库。
  • 此时,我们创建一个游标对象来处理对数据库表的查询。
  • 我们首先创建我们的person表并创建一个 csv 文件,其中包含我们将插入到我们表中的内容。
  • 我们使用open()函数打开上面创建的 csv 文件。
  • 我们通过 csv.reader() 方法将 csv 文件的所有内容提取到我们的内容变量中。
  • 然后我们通过executemany() 方法将 csv 文件的按行内容插入到我们的数据库中,该方法将用 csv 文件的下两个逗号分隔数据替换 (?,?) 并将其作为记录插入到person表中。
  • 最后,我们使用 SELECT 语句验证 csv 文件的数据是否已成功插入到我们的表中,并提交更改并关闭数据库连接。

下面是实现。

为了实现,我们将在geeks.db数据库中创建一个person表。我们将在person表中插入person_records.csv的内容。下面是我们将要使用的 CSV 文件:

以下是基于上述方法的完整程序:

Python3
# Import required modules
import csv
import sqlite3
  
# Connecting to the geeks database
connection = sqlite3.connect('g4g.db')
  
# Creating a cursor object to execute
# SQL queries on a database table
cursor = connection.cursor()
  
# Table Definition
create_table = '''CREATE TABLE person(
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                name TEXT NOT NULL,
                age INTEGER NOT NULL);
                '''
  
# Creating the table into our 
# database
cursor.execute(create_table)
  
# Opening the person-records.csv file
file = open('person-records.csv')
  
# Reading the contents of the 
# person-records.csv file
contents = csv.reader(file)
  
# SQL query to insert data into the
# person table
insert_records = "INSERT INTO person (name, age) VALUES(?, ?)"
  
# Importing the contents of the file 
# into our person table
cursor.executemany(insert_records, contents)
  
# SQL query to retrieve all data from
# the person table To verify that the
# data of the csv file has been successfully 
# inserted into the table
select_all = "SELECT * FROM person"
rows = cursor.execute(select_all).fetchall()
  
# Output to the console screen
for r in rows:
    print(r)
  
# Commiting the changes
connection.commit()
  
# closing the database connection
connection.close()


输出:

SQLite: