如何将Pandas DataFrame导入SQLite表?pd读取函数导入有何差异
已加载DataFrame写入现有SQLite数据表的操作步骤
- 第一步:为无列名的DataFrame匹配数据库字段
你当前加载的DataFrame默认是0/1/2/3的数字列名,需要先将列名和songs表的非自增字段名、顺序一一对应,避免写入时数据错位、字段不匹配报错:
注意:你现有建表代码中引用了未定义的data.columns = ["execution_id", "song_id", "artist_id", "song_title"]sql_create_users_table变量,运行前需要删除该行或补充对应的建表SQL,否则会触发运行报错 - 第二步:使用pandas内置的
to_sql方法完成写入
因为songs表已经提前创建完成,需要将if_exists参数设为追加模式,不要重建表覆盖原有结构,同时关闭索引写入匹配自增主键的逻辑:
小提示:写入操作要使用和建表操作同一个数据库连接对象,避免出现连接不同步、数据未提交的问题# 传入和建表操作同一个数据库连接对象 data.to_sql( name="songs", con=conn, if_exists="append", # 向已有表追加数据,不会改动原有表结构 index=False # 不写入DataFrame自带的数字索引,匹配数据库自增id的设计 )
pd.read_table与pd.read_csv在数据导库场景的使用差异 - 底层无本质区别:两个函数是pandas同一套文本解析引擎封装的功能,核心读取逻辑、支持的参数类型、输出结果的格式完全一致,不存在功能或性能上的根本差异。
- 仅默认参数存在区别:
pd.read_csv默认分隔符为半角逗号,,专门适配标准CSV格式文件pd.read_table默认分隔符为半角制表符\t,最初设计用来适配TSV格式文件
- 自定义分隔符场景下完全等效:只要手动指定相同的分隔符参数,两个函数读取得到的DataFrame结果完全一致,后续写入数据库的流程没有任何区别。比如你当前用
作为分隔符的场景,不管选哪个函数,只要传入 sep='<SEP>'参数,读取效果完全相同。 - 实际选型建议:读标准CSV/TSV格式文件时,选择对应匹配默认分隔符的函数可以减少手动传参的操作;读自定义分隔符的文件时,两个函数可以任意选择,不需要刻意区分。
内容的提问来源于stack exchange,提问作者neek98
相关产品推荐
相关产品推荐

