gpt4 book ai didi

python - 将 SQL 转换为 SQL 炼金术

转载 作者:行者123 更新时间:2023-11-29 05:22:01 26 4
gpt4 key购买 nike

我是 Flask SQl 炼金术的新手;虽然我知道炼金术抽象了 sql 语法并在创建模型时使事情变得简单;有时我们希望以一种非常特定的方式在前端可视化数据。

我有以下查询,我想使用 alchemy 使用 session.query 和过滤器以及可能的分组。

我的查询是这样的:

  1. mysql> SELECT status, COUNT(id) FROM bar_baz where not name = 'Foo' and not name = 'Bar' GROUP BY 状态
  2. select (select (select COUNT(id) FROM instance where not name = 'erf' and not tiername = 'wer' and type='app') 作为应用,(select COUNT(1) FROM instance_2 where not name = 'visq' 而不是 name = 'werf' 和 type='adc') 作为 dual 的 adc;

我验证了以下查询适用于 MySQL;我想知道我们是否有类似的功能

c = conn.cursor()
query = 'SELECT status, COUNT(id) FROM bar_baz where not name = 'Foo' and not name = 'Bar' GROUP BY status'
c.execute(query)
print c.fetchall()


class Instance(Base):
__tablename__ = 'instance'

id = Column(Integer, primary_key=True)
name = Column(String)
status = Column(String)
type = Column(String)

class Instance2(Base):
__tablename__ = 'instance_2'

id = Column(Integer, primary_key=True)
name = Column(String)
status = Column(String)
type = Column(String)
inc = Column(Integer)

感兴趣的查询:

select (select COUNT(id) FROM instance where not name = 'erf' and not tiername = 'wer' and type='app') as app, (select COUNT(1) FROM instance_2 where not name = 'visq' and not name = 'werf' and type='adc') as adc from dual;`

最佳答案

对于第一个查询,使用 db.func.count 生成计数表达式。从 docs 中,其他一切都应该是显而易见的.

status_counts = db.session.query(BarBaz.status, db.func.count(BarBaz.id).label('count_id')
).filter(db.not_(db.or_(BarBaz.name == 'Foo', BarBaz.name == 'Bar'))
).group_by(BarBaz.status
).all()

对于第二个查询,使用 subquery()生成可选择的查询。

sub_app = db.session.query(db.func.count(Instance.id).label('app')
).filter(db.not_(db.or_(Instance.name == 'erf', Instance.tiername == 'wer')), Instance.type == 'app'
).subquery()

sub_adc = db.session.query(db.func.count(Instance.id).label('adc')
).filter(db.not_(db.or_(Instance2.name == 'visq', Instance2.name == 'werf')), Instance2.type == 'adc'
).subquery()

out = db.session.query(sub_app.c.app, sub_adc.c.adc).all()

关于python - 将 SQL 转换为 SQL 炼金术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com