小马ORM做转换生成器expression式到SQL的好方法。 例: >>> select(p for p in Person if p.name.startswith('Paul')) .order_by(Person.name)[:2] SELECT "p"."id", "p"."name", "p"."age" FROM "Person" "p" WHERE "p"."name" LIKE "Paul%" ORDER BY "p"."name" LIMIT 2 [Person[3], Person[1]] >>> 我知道Python有很棒的内省和元编程内置,但是这个库如何能够在不进行预处理的情况下转换生成器expression式? 它看起来像魔术。 [更新] Blender写道: 这是你之后的文件 。 似乎用一些内省魔法来重build发生器。 我不确定它是否支持Python的100%的语法,但这很酷。 – 搅拌机 我以为他们正在探索一些来自发生器expression式协议的特性,但看着这个文件,并看到了ast模块…不,他们没有在飞行中检查程序源,是吗? 令人兴奋… @BrenBarn:如果我试图在select函数调用之外调用生成器,结果是: >>> x = (p for p in Person if p.age > 20) […]