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

为何我的SQLite3代码出现VALUES附近语法错误?求修复方法

修复SQLite插入操作的语法错误

你的代码里有几个关键问题导致了OperationalError,我来一步步帮你修正:

问题分析

  1. 模块导入错误:你写的import sqlite不对,Python操作SQLite的标准库是sqlite3,得改成正确的导入语句。
  2. INSERT语句语法错误:SQL的插入语法规范是INSERT INTO 表名(列1, 列2) VALUES(值1, 值2),你写的INSERT INTO output(X,VALUES(?))完全不符合规则,而且你的表定义的列是name和content,不是X和Y。
  3. 数据插入逻辑错误:你当前的循环会把X和Y的元素分别插入成单独的行,但从需求来看,应该是把X[i]和Y[i]作为同一行的两个字段值插入,而不是分两次插入。

修正后的代码

import sqlite3  # 修正导入语句

con = sqlite3.connect('output.db')
cur = con.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS output(name VARCHAR(10), content VARCHAR(30))')

X = ['abc', 'def']
Y = ['ghi', 'jkl']

# 同时遍历两个列表的对应元素,一次插入一行数据
for x_val, y_val in zip(X, Y):
    # 使用标准的INSERT语法,用占位符接收参数
    cur.execute('INSERT INTO output(name, content) VALUES(?, ?)', (x_val, y_val))

con.commit()
cur.close()
con.close()

关键修正点说明

  • 语法规范:INSERT INTO output(name, content) VALUES(?, ?)明确指定了要插入的列,并用占位符?接收参数,这是SQLite参数化查询的标准写法,既避免语法错误,还能防止SQL注入。
  • 循环优化:用zip(X, Y)同时遍历两个列表的对应元素,一次插入一行,让数据结构更合理(每一行对应X和Y的一组元素)。
  • 参数传递:传入的参数是元组(x_val, y_val),确保每个占位符都能匹配到对应的值,避免参数格式错误。

这样修改后,你的代码就能正常运行,把X和Y的对应元素正确插入到output表中了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:54:11