本文整理汇总了Python中sqlalchemy.dialects.postgresql.aggregate_order_by方法的典型用法代码示例。如果您正苦于以下问题:Python postgresql.aggregate_order_by方法的具体用法?Python postgresql.aggregate_order_by怎么用?Python postgresql.aggregate_order_by使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqlalchemy.dialects.postgresql
的用法示例。
在下文中一共展示了postgresql.aggregate_order_by方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_aggregate_order_by_multi_col
# 需要导入模块: from sqlalchemy.dialects import postgresql [as 别名]
# 或者: from sqlalchemy.dialects.postgresql import aggregate_order_by [as 别名]
def test_aggregate_order_by_multi_col(self):
m = MetaData()
table = Table("table1", m, Column("a", Integer), Column("b", Integer))
expr = func.string_agg(
table.c.a,
aggregate_order_by(
literal_column("','"), table.c.a, table.c.b.desc()
),
)
stmt = select([expr])
self.assert_compile(
stmt,
"SELECT string_agg(table1.a, "
"',' ORDER BY table1.a, table1.b DESC) "
"AS string_agg_1 FROM table1",
)
示例2: _get_ips_ports
# 需要导入模块: from sqlalchemy.dialects import postgresql [as 别名]
# 或者: from sqlalchemy.dialects.postgresql import aggregate_order_by [as 别名]
def _get_ips_ports(self, flt, limit=None, skip=None):
req = flt.query(select([self.tables.scan.id]))
if skip is not None:
req = req.offset(skip)
if limit is not None:
req = req.limit(limit)
base = req.cte("base")
return (
{
"addr": rec[2], "starttime": rec[1],
"ports": [
{"proto": proto, "port": int(port), "state_state": state}
for proto, port, state in (
elt.split(',') for elt in
''.join(rec[0])[3:-3].split(')","(')
)
]
}
for rec in
self.db.execute(
select([
func.array_agg(postgresql.aggregate_order_by(
tuple_(self.tables.port.protocol,
self.tables.port.port,
self.tables.port.state).label('a'),
tuple_(self.tables.port.protocol,
self.tables.port.port).label('a')
)).label('ports'),
self.tables.scan.time_start, self.tables.scan.addr,
])
.select_from(join(self.tables.port, self.tables.scan))
.group_by(self.tables.scan.addr, self.tables.scan.time_start)
.where(and_(self.tables.port.port >= 0,
self.tables.scan.id.in_(base)))
)
)
示例3: test_aggregate_order_by_one
# 需要导入模块: from sqlalchemy.dialects import postgresql [as 别名]
# 或者: from sqlalchemy.dialects.postgresql import aggregate_order_by [as 别名]
def test_aggregate_order_by_one(self):
m = MetaData()
table = Table("table1", m, Column("a", Integer), Column("b", Integer))
expr = func.array_agg(aggregate_order_by(table.c.a, table.c.b.desc()))
stmt = select([expr])
# note this tests that the object exports FROM objects
# correctly
self.assert_compile(
stmt,
"SELECT array_agg(table1.a ORDER BY table1.b DESC) "
"AS array_agg_1 FROM table1",
)
示例4: test_aggregate_order_by_two
# 需要导入模块: from sqlalchemy.dialects import postgresql [as 别名]
# 或者: from sqlalchemy.dialects.postgresql import aggregate_order_by [as 别名]
def test_aggregate_order_by_two(self):
m = MetaData()
table = Table("table1", m, Column("a", Integer), Column("b", Integer))
expr = func.string_agg(
table.c.a, aggregate_order_by(literal_column("','"), table.c.a)
)
stmt = select([expr])
self.assert_compile(
stmt,
"SELECT string_agg(table1.a, ',' ORDER BY table1.a) "
"AS string_agg_1 FROM table1",
)
示例5: test_aggregate_orcer_by_no_arg
# 需要导入模块: from sqlalchemy.dialects import postgresql [as 别名]
# 或者: from sqlalchemy.dialects.postgresql import aggregate_order_by [as 别名]
def test_aggregate_orcer_by_no_arg(self):
assert_raises_message(
TypeError,
"at least one ORDER BY element is required",
aggregate_order_by,
literal_column("','"),
)
示例6: test_aggregate_order_by_adapt
# 需要导入模块: from sqlalchemy.dialects import postgresql [as 别名]
# 或者: from sqlalchemy.dialects.postgresql import aggregate_order_by [as 别名]
def test_aggregate_order_by_adapt(self):
m = MetaData()
table = Table("table1", m, Column("a", Integer), Column("b", Integer))
expr = func.array_agg(aggregate_order_by(table.c.a, table.c.b.desc()))
stmt = select([expr])
a1 = table.alias("foo")
stmt2 = sql_util.ClauseAdapter(a1).traverse(stmt)
self.assert_compile(
stmt2,
"SELECT array_agg(foo.a ORDER BY foo.b DESC) AS array_agg_1 "
"FROM table1 AS foo",
)