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

Django项目中导入Pandas DataFrame至SQLite3表无更新且无报错

解决Pandas DataFrame写入SQLite3表无更新且无报错的问题
  • 未提交事务:SQLite连接默认不会自动提交事务,to_sql执行后需要手动提交并关闭连接,否则数据不会写入磁盘。在df.to_sql后添加:

    cnx.commit()
    cnx.close()
    
  • 检查列名匹配:确保DataFrame的列名与SQLite表daos_transaction的字段名完全一致(包括大小写),如果列名不匹配,Pandas会忽略不匹配的列,可能导致写入无效果但无报错。

  • 优化日期处理逻辑:原代码循环修改DataFrame的方式效率低且可能触发警告,改用Pandas内置的字符串处理方法:

    df['date_time'] = df['date_time'].str.replace('T', ' ').str.split('+').str[0]
    df['date_time'] = pd.to_datetime(df['date_time'])
    
  • 验证DataFrame数据:在写入前确认CSV数据是否正确读取,执行以下代码检查:

    print(df.shape)  # 查看行数和列数
    print(df.head()) # 查看前5条数据
    

    如果输出行数为0,说明CSV文件为空或读取逻辑有问题。

  • 添加错误捕获:为排查隐性错误,添加异常捕获逻辑:

    try:
        df.to_sql('daos_transaction', cnx, if_exists='append', index=False)  # 避免写入默认索引列
        cnx.commit()
        print("数据写入成功")
    except Exception as e:
        print(f"写入失败,错误信息: {str(e)}")
        cnx.rollback()
    finally:
        cnx.close()
    

修正后的完整代码

import pandas as pd
import sqlite3

# 读取CSV数据
df = pd.read_csv("correct/path/to/csv/file")

# 格式化日期字段
df['date_time'] = df['date_time'].str.replace('T', ' ').str.split('+').str[0]
df['date_time'] = pd.to_datetime(df['date_time'])

# 连接SQLite数据库并写入数据
cnx = sqlite3.connect('correct/path/to/db')
try:
    df.to_sql('daos_transaction', cnx, if_exists='append', index=False)
    cnx.commit()
    print("数据成功写入表daos_transaction")
except Exception as e:
    print(f"写入出错: {str(e)}")
    cnx.rollback()
finally:
    cnx.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:35:25