擅长:python、mysql、java
<p>如果从中获取<code>rsid</code>s的表在同一个数据库中可用,我将使用<a href="http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.subquery" rel="noreferrer">subquery</a>将它们传递到<code>Genotypes</code>查询中,而不是在Python代码中传递一百万个条目。</p>
<pre><code>sq = session.query(RSID_Source).subquery()
q = session.query(Genotypes).filter(Genotypes.rsid.in_(sq))
</code></pre>
<p>问题是,为了将该列表传递给SQLite(或任何数据库),SQLAlchemy必须将<code>in</code>子句的每个条目作为变量传递。SQL大致翻译为:</p>
<pre><code>-- Not valid SQLite SQL
DECLARE @Param1 TEXT;
SET @Param1 = ?;
DECLARE @Param2 TEXT;
SET @Param2 = ?;
-- snip 999,998 more
SELECT field1, field2, -- etc.
FROM Genotypes G
WHERE G.rsid IN (@Param1, @Param2, /* snip */)
</code></pre>