Dus*_*and 18 python formatting sqlalchemy pep8
我们正在尝试遵循PEP8指南来格式化我们的Python代码并保持每行不超过80个字符.
我们的SQLAlchemy行特别麻烦,拥有大量链接方法和大量复杂参数,逻辑和嵌套函数.
是否有任何特定的最佳实践来格式化Python SQLAlchemy与PEP8的约束?
我找到的最接近的答案就在这里,但我正在处理的代码远比这复杂得多.
Nic*_*oan 28
来到这里希望有更好的解决方案,但我想我更喜欢圆括号包装样式:
subkeyword = (
Session.query(
Subkeyword.subkeyword_id,
Subkeyword.subkeyword_word
)
.filter_by(subkeyword_company_id=self.e_company_id)
.filter_by(subkeyword_word=subkeyword_word)
.filter_by(subkeyword_active=True)
.one()
)
Run Code Online (Sandbox Code Playgroud)
这很好而且清晰,避免了可怕的反斜杠.
PEP-8鼓励反斜杠但SQLAlchemy的代码,我不禁想到他们是最可读的,因为你可以在自己的行开始使每个生成功能.如果括号内有很多参数,我也会在各行中将它们分开.
subkeyword = Session.query(
Subkeyword.subkeyword_id,
Subkeyword.subkeyword_word
).\
filter_by(subkeyword_company_id=self.e_company_id).\
filter_by(subkeyword_word=subkeyword_word).\
filter_by(subkeyword_active=True).\
one()
Run Code Online (Sandbox Code Playgroud)
当然,无论代码有多复杂,缩进模式都可以用于任何数量的代码,但是在Python中我们希望避免过多的嵌套.通常使用Query会发生嵌套,因为您正在组合多个子查询.所以一定要提前构建子查询:
subq = Session.query(
Bat.id,
func.foo(Bat.x, Bat.y).label('foo')
).\
filter(Bat.id==Bar.name).\
correlate(Bar).\
subquery()
subq2 = Session.query(Foo.id, Foo.bar).\
filter_by(flag>5).\
subquery()
result = Session.query(
subq.c.id,
subq.c.foo,
subq2.c.bar
).\
join(subq2,
and_(
subq.c.id > subq2.c.foo,
subq.bar == subq2.id
)
).\
order_by(subq.c.id, subq2.c.bar)
Run Code Online (Sandbox Code Playgroud)
我欢迎关于反斜杠事情的其他意见.
| 归档时间: |
|
| 查看次数: |
4422 次 |
| 最近记录: |