使用SQLite INSERT语句遇参数类型不支持错误,求排查脚本问题
问题分析与解决
错误原因:你调用
c.execute()时,错误地将数据库连接对象conn作为第二个参数传入。cursor.execute()的第二个参数是用于参数化查询的参数集合(如元组、列表),而非数据库连接。这导致SQLite无法识别该参数类型,抛出ProgrammingError。修正代码:
将插入语句的执行代码修改为:c.execute( 'INSERT INTO spiders (' 'record_id, month, day, year, plot_id, species_id, sex, ' 'hindfoot_length, weight' ') VALUES (0, 7, 31, 2023, 2, "DM", "F", 99.0, 60.0)' ) # 提交事务,确保数据写入数据库 conn.commit()更规范的写法是使用参数化查询(避免SQL注入风险,即使是测试场景也建议遵循):
insert_query = ''' INSERT INTO spiders ( record_id, month, day, year, plot_id, species_id, sex, hindfoot_length, weight ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ''' values = (0, 7, 31, 2023, 2, "DM", "F", 99.0, 60.0) c.execute(insert_query, values) conn.commit()额外注意事项:执行插入操作后必须调用
conn.commit()提交事务,否则插入的数据不会持久化到数据库中。脚本结束后建议关闭游标和连接:c.close() conn.close()
内容的提问来源于stack exchange,提问作者jvkloc
相关产品推荐
相关产品推荐

