Python 如何使用先前定义的列表查询SQLite3数据库关联矩阵

Python 如何使用先前定义的列表查询SQLite3数据库关联矩阵,python,matrix,sqlite,Python,Matrix,Sqlite,我有一个sqlite3数据库,如下所示: |Tickers|A |B |C |D |E | |-------|----|----|----|----|----| |A |1.00|0.25|0.75|0.60|0.30| |B |0.25|1.00|0.20|0.40|0.70| |C |0.75|0.20|1.00|0.10|0.90| |D |0.60|0.40|0.10|1.00|0.50| |E

我有一个sqlite3数据库,如下所示:

|Tickers|A   |B   |C   |D   |E   |  
|-------|----|----|----|----|----|   
|A      |1.00|0.25|0.75|0.60|0.30|  
|B      |0.25|1.00|0.20|0.40|0.70|  
|C      |0.75|0.20|1.00|0.10|0.90|  
|D      |0.60|0.40|0.10|1.00|0.50|  
|E      |0.30|0.70|0.90|0.50|1.00|
我想使用Python中的列表查询该数据库,以查找某些股票的相关性(列与每个股票的行相交)。我使用以下代码创建列表,然后查询数据库:

Stocks=['A','B','C']
import sqlite3
conn = sqlite3.connect('CorrelationMatrix')
c = conn.cursor()
Correlations=[]
for i in range(0,len(Stocks)):
    c.execute("SELECT Stocks[i] FROM CorrelationMatrix WHERE Tickers=Stocks[i]")
for row in c.fetchall():
    Correlations.append(row)
print(Correlations)
我希望查询结果为这3只股票(而不是全部5只)创建一个相关性列表,如下所示:

|Tickers|A   |B   |C   |D   |E   |  
|-------|----|----|----|----|----|   
|A      |1.00|0.25|0.75|0.60|0.30|  
|B      |0.25|1.00|0.20|0.40|0.70|  
|C      |0.75|0.20|1.00|0.10|0.90|  
|D      |0.60|0.40|0.10|1.00|0.50|  
|E      |0.30|0.70|0.90|0.50|1.00|
[1.00,0.75,0.25,0.25,1.00,0.20,0.75,0.20,1.00]

当我执行代码并打印相关性列表时,会导致以下错误:

sqlite3.error:靠近“[i]”:语法错误


我似乎无法使用python列表查询数据库?是否有人有更好的解决方案来处理这样的矩阵?

您可以使用字符串格式传递变量以插入列名,请尝试:

Stocks=['A','B','C']
c.execute("""SELECT %s FROM CorrelationMatrix WHERE Tickers in %s"""%(','.join(Stocks),tuple(Stocks)))
rows = c.fetchall()
Correlations = [e for r in rows for e in r]
print(Correlations)

相关性将是:

[1.0, 0.25, 0.75, 0.75, 0.2, 1.0, 0.25, 1.0, 0.2]