SQL需要4个参数转换成值。问题是SQLite无法将多个值返回到子查询中,您将遇到以下错误:
sqlite3.OperationalError:作为表达式一部分的SELECT只允许单个结果
您可以使用两个Select语句,每个语句对应一个所需的值。以下是我尝试的:sql = '''
INSERT OR REPLACE INTO test (id, a, b, c)
VALUES (
?,
(SELECT a FROM test WHERE id = ?),
(SELECT b FROM test WHERE id = ?),
?
)'''
还有一个更优雅的解决方案。在
^{pr2}$
下面是一个工作示例,我做了一些更改,以便相应地填充数据库表:#!/usr/bin/env python2.7
import os
import sys
import sqlite3
from contextlib import closing
DB_FILE = 'test.sqlite'
with closing(sqlite3.connect(DB_FILE)) as db:
# First, some setup...
cursor = db.cursor()
cursor.execute('CREATE TABLE test (id TEXT PRIMARY KEY, a TEXT, b TEXT, c TEXT)')
sql = '''INSERT INTO test (i