我正在尝试使用python 3和sqlite3对sqlite数据库执行SELECT
查询。
当我在WHERE .. IN (list of values)
语句中使用值列表时,它可以工作,但如果我使用转换为列表的numpy数组,则不返回任何内容。
这是一个最小的工作示例:
import numpy as np
import sqlite3
conn = sqlite3.connect('test.sqlite')
c = conn.cursor()
# create test table
c.execute("CREATE TABLE test (col1 INTEGER)")
values = [(v,) for v in range(10000)]
c.executemany("INSERT INTO test (col1) VALUES (?)", values)
conn.commit()
使用列表执行SELECT查询:
c.execute("SELECT col1 FROM test WHERE col1 IN (?,?,?)", [0,17,42])
c.fetchall()
返回:[(0,), (17,), (42,)]
- >确定
但是,
c.execute("SELECT col1 FROM test WHERE col1 IN (?,?,?)", list(np.array([0,17,42])))
c.fetchall()
返回[]
虽然
list(np.array([0,17,42])) == [0,17,42]
返回True
预期吗?