擅长:python、mysql、java
<p>如果你喜欢列表理解,不要忘记它们的“懒惰”对应项:<a href="http://docs.python.org/whatsnew/2.4.html#pep-289-generator-expressions" rel="nofollow">generator expressions</a>。这至少在一定程度上解决了动态构造查询的问题。用<a href="http://docs.python.org/library/itertools.html" rel="nofollow">itertools</a>来补充这一点,当然还有一些在iterables上工作的<a href="http://docs.python.org/library/functions.html" rel="nofollow">builtin functions</a>,你可以说你有你的Python“LINQ to Object”(或者至少是非常接近的东西)。</p>
<p>在python中不会像在C#和LINQ中那样构建“伪sql”语法,但我想这是一个品味问题。(就我个人而言,我喜欢它仍然是Python,使用相同的关键字等,而不是试图成为sql:熟悉的<code>if</code>和<code>for</code>子句,而不是引入<code>where</code>和<code>from</code>等等)。</p>
<p>面向对象的DSL方法似乎是可行的(而且比我认为的基于字符串的方法更容易实现)。你可以在ORMs中找到类似SqlAlchemy这样的东西,但我不知道是否有人已经为“正常”的数据结构做了这些(我想人们并不真的觉得有必要吗?)</p>
<p>对于索引等等:我想你必须搜索实际的“对象数据库”。。。</p>