You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将CSV天气数据导入SQLite3数据库表

解决方案:将CSV天气数据插入SQLite数据库

刚好我之前做过类似的需求,结合你给出的表结构和已有条件,直接用pandas的to_sql方法就能高效完成数据插入,不用手动写循环拼接SQL语句,既简洁又不容易出错。下面是完整的实现代码和关键细节解释:

完整代码示例

import pandas as pd
import sqlite3

# 读取CSV文件,只加载需要的三个字段
weather_df = pd.read_csv('your_weather_data.csv', usecols=['date', 'temperaturemin', 'temperaturemax'])

# 重命名列名,和SQLite表的字段名完全匹配(避免字段映射错误)
weather_df.rename(columns={
    'date': 'Date',
    'temperaturemin': 'TemperatureMin',
    'temperaturemax': 'TemperatureMax'
}, inplace=True)

# 连接到目标SQLite数据库
db_conn = sqlite3.connect('rduDB.db')

try:
    # 将DataFrame数据批量插入到rduWeather表
    weather_df.to_sql(
        name='rduWeather',
        con=db_conn,
        if_exists='append',  # 追加模式,不会覆盖已有数据
        index=False,         # 不把DataFrame的索引作为表的id字段(表的id是自增主键)
        dtype={
            'Date': 'VARCHAR(256)',
            'TemperatureMin': 'TEXT',
            'TemperatureMax': 'TEXT'
        }
    )
    print("CSV数据成功插入到rduWeather表!")
except Exception as insert_error:
    print(f"插入过程遇到问题: {insert_error}")
finally:
    # 无论成功失败,都要关闭数据库连接
    db_conn.close()

关键细节解释

我把几个容易踩坑的点单独拎出来说:

  • 精准读取CSV字段:用usecols参数只加载需要的date、temperaturemin、temperaturemax三个字段,既节省内存,也避免后续处理无关数据的麻烦。
  • 列名严格匹配:你的SQLite表字段是大写开头的(比如Date),而CSV里是小写,所以必须重命名列名,否则pandas会因为字段名不匹配而报错。
  • to_sql参数的核心作用:
    • if_exists='append':这是最关键的参数!如果你的表已经有历史数据,这个参数会把新的CSV数据追加到表末尾;如果是第一次插入,也能正常适配已有的表结构。要是不小心写成replace,会直接清空表重新插入,千万注意!
    • index=False:因为你的表已经有自增的id主键,不需要把DataFrame的索引当成id,所以必须禁用这个选项,数据库会自动为每条插入的数据生成唯一的id值。
    • dtype:显式指定每个字段的类型,和你创建表时的CREATE TABLE语句保持一致,避免pandas自动推断类型导致的兼容性问题(比如把温度数值自动转成整数类型,而表要求是TEXT)。
  • 异常处理与连接关闭:用try...finally确保无论插入成功还是失败,数据库连接都会被关闭,防止资源泄漏。

额外注意事项

  • 如果CSV里的日期格式和你预期的不一致(比如是MM/DD/YYYY而不是YYYY-MM-DD),可以用pandas先转换格式:
    weather_df['Date'] = pd.to_datetime(weather_df['Date']).dt.strftime('%Y-%m-%d')
    
  • 要是你后续想把温度字段改成数值类型(比如REAL),只需要修改表结构和dtype参数即可,当前代码是完全按照你给出的表结构来写的。

内容的提问来源于stack exchange,提问作者Pyt Leb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:26:56