python sqlite3 executemany_Python+sqlite3:具有“构造”值的executemany

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

你可能感兴趣的:(python,sqlite3,executemany)