我试图对sqlalchemy中的查询进行简单的过滤操作,如下所示:
q = session.query(Genotypes).filter(Genotypes.rsid.in_(inall))
Run Code Online (Sandbox Code Playgroud)
哪里
inall是一个字符串列表基因型映射到一个表:class Genotypes(object):pass
Genotypes.mapper = mapper(Genotypes, kg_table, properties={'rsid': getattr(kg_table.c, 'rs#')})
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很简单,但是当我通过执行以下操作执行上述查询时出现以下错误q.first():
"sqlalchemy.exc.OperationalError:(OperationalError)太多的SQL变量u'SELECT"随后在1M的项目列表inall 列表.但它们不应该是SQL变量,只是一个列表,其成员资格是过滤条件.
我不正确地进行过滤吗?
(db是sqlite)
我正在选择data.frame的子集g.raw,如下所示:
g.raw <- read.table(gfile,sep=',', header=F, row.names=1)
snps = intersect(row.names(na.omit(csnp.raw)),row.names(na.omit(esnp.raw)))
g = g.raw[snps,]
Run Code Online (Sandbox Code Playgroud)
有用.但是,最后一行非常慢.
g.raw约为18M行,snps约为1M.我意识到这些是非常大的数字,但这看起来像一个简单的操作,并将g读入内存中保存的矩阵/ data.frame不是问题(花了几分钟),而我上面描述的这个操作正在采取小时.
我如何加快速度?我想要的只是缩小g.raw.
谢谢!