1
小马(ORM)如何发挥作用?
Pony ORM很好地把生成器表达式转换成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具有出色的自省和内置元编程功能,但是该库如何能够在不进行预处理的情况下转换生成器表达式?看起来像魔术。 [更新] 搅拌器写道: 这是您要查找的文件。似乎可以使用一些自省向导来重构生成器。我不确定它是否支持100%的Python语法,但这很酷。- 搅拌机 我以为他们正在研究生成器表达协议中的某些功能,但正在查看此文件并看到其中ast涉及的模块...不,他们不是在动态检查程序源,是吗?令人振奋... @BrenBarn:如果我尝试在select函数调用之外调用生成器,则结果为: >>> x = (p for p in Person if p.age > 20) >>> …