首页 > 解决方案 > python SQLite按值数组选择

问题描述

我发现了用于插入数据的 executemany 和其他一些方法。但是执行许多不适用于 SELECT。

在sql格式中,可以使用IN和VALUES,例如:

SELECT col1,col2 FROM Table1 WHERE col3 IN (VALUES (1),(2),(3) )

如何在 python 中使用数组执行此操作?

这是一次尝试,但存在绑定问题:

dataArr = (1,2,3)
c.execute( "SELECT col1,col2 FROM Table1 WHERE col3 IN (?) ",(dataArr,) )
ret = c.fetchall()

我也尝试过这个问题的字符串连接,但它将行扁平化为一个数组。好处是它的执行速度比我的循环快 2~3 倍,这是我主要关心的问题。

标签: pythonsqlite

解决方案


试试这个:

args=['1','2','3']

sql="select col1,col2 FROM Table1 WHERE col3 IN in ({seq})".format(seq=','.join(['?']*len(args)))

rows=cur.execute(sql, args)

for row in rows:
    print(row)

推荐阅读