平时做开发或者处理数据的时候,我们常常要把 Excel 表格里的内容存到数据库里,这样数据就能长期保存,也能做更多操作。Python 有很多现成的工具包,能让这件事变得特别简单。
这篇文章会用大家常用的 pandas 和 sqlite3 这两个库,一步步教你把 Excel 文件里的数据快速、批量地放进 SQLite 数据库里,整个过程不复杂,适合大多数有固定格式的数据。
需要先装的工具
开始之前,请先在电脑上安装下面这两个包:
pip install pandas openpyxl注意:因为我们要读的是.xlsx文件,所以pandas要靠openpyxl才能打开它。
最简单的做法(直接上代码)
下面这段完整的脚本能读一个 Excel 文件,并把第一个工作表的内容写进 SQLite 数据库:
import sqlite3
import pandas as pd
def import_excel_to_sqlite(excel_path, db_path, table_name):
"""
把 Excel 文件第一个工作表的内容存进 SQLite 数据库
:param excel_path: Excel 文件的位置(支持 .xlsx)
:param db_path: SQLite 数据库文件的位置
:param table_name: 要存数据的表名(如果已经有就删掉重来)
"""
# 先把 Excel 读成一个表格对象
data_frame = pd.read_excel(excel_path, engine='openpyxl')
# 然后连上数据库(要是没有这个文件,系统会自动新建一个)
connection = sqlite3.connect(db_path)
# 接着把表格内容直接写进数据库的指定表里
data_frame.to_sql(table_name, connection, if_exists='replace', index=False)
# 最后记得关掉连接
connection.close()
print(f"已经成功把 {excel_path} 的内容存进 {db_path} 里的 '{table_name}' 表了!")
# 举个例子怎么用
if __name__ == "__main__":
excel_file = "data.xlsx"
sqlite_database = "example.db"
target_table = "employees"
import_excel_to_sqlite(excel_file, sqlite_database, target_table)想更灵活一点?可以自己控制字段和空值
如果你不想让程序自动决定字段类型,或者想好好处理那些空白的地方,可以先自己建好表结构,再一条条插数据:
import sqlite3
import pandas as pd
import numpy as np
def custom_excel_to_sqlite(excel_path, db_path, table_name):
# 先读取 Excel 里的内容
df = pd.read_excel(excel_path, engine='openpyxl')
# 把表格里显示为 NaN 的地方换成 None,这样 SQLite 才认得
df = df.replace({np.nan: None})
# 连上数据库
conn = sqlite3.connect(db_path)
cur = conn.cursor()
# 自己写 SQL 语句建表(字段你说了算)
create_sql = f"""
CREATE TABLE IF NOT EXISTS {table_name} (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER,
salary REAL,
department TEXT
);
"""
cur.execute(create_sql)
# 如果表里原来有数据,先清空(这步可选)
cur.execute(f"DELETE FROM {table_name}")
# 一次性把所有行都插进去
records = df.to_records(index=False)
cur.executemany(
f"INSERT INTO {table_name} (id, name, age, salary, department) VALUES (?, ?, ?, ?, ?)",
records
)
conn.commit()
conn.close()
print("高级导入操作已经搞定!")最后说两句
其实只要用 pandas 的 read_excel() 和 to_sql() 这两个功能,几行代码就能完成从 Excel 到 SQLite 的数据搬家。这种方法不仅适合小项目快速试手,也很容易加到自动运行的脚本或者网站后台里。以后要是遇到更复杂的任务,比如要连别的数据库或者做数据清洗,还可以搭配像 sqlalchemy 这样的工具一起用。