Ошибка группы SQLAlchemy и запроса суммы - PullRequest
0 голосов
/ 28 апреля 2020

Я выполняю запрос простой группы и суммы для SQL Таблицы серверов на основе Azure. Однако происходит сбой со следующей ошибкой SQL: «В списке выбора можно указать только одно выражение, если подзапрос не введен с EXISTS», когда вызывается метод pandas read_ sql

I Я ошеломлен, так как этот код работал без проблем в августе 2019 года, но сейчас не работает. С другими, даже более простыми запросами, я смог обойти это, создав сеанс ORM и используя синтаксис, приведенный ниже:

records = sess.query(example_table).filter(example_table.c.Load_ID == source_item_id).all()
df = pd.DataFrame(records)

Код, который я использую, ниже

engine = sqlalchemy.create_engine('connectionstringhere')

conn = engine.connect()

metadata = MetaData()

usagedata = Table(table_name,
                     metadata,
                     #handle the oddly named columns
                    Column("financial_year_key",Integer,key = "financial_year_key")
                    ,Column("A",Float,key = "A")
                    ,Column("B",Float,key = "B) 
                    ,Column("C",Float,key = "C")
                      ,autoload=True, autoload_with=engine, schema=schema_name
                      )

#get raw table data, filtered by source_item_id
query = select([usagedata.c.financial_year_key
                ,usagedata.c.year_and_quarter
                ,func.sum(usagedata.c.A).label("A") 
                ,func.sum(usagedata.c.B).label("B")
                ,func.sum(usagedata.c.C).label("C")
                ,func.sum(usagedata.c.D).label("D")  ]                   
               )
query = query.where(usagedata.c.E != source_item_id)
query = query.where(usagedata.c.F.in_(('approved', 'published'))  )
query = query.where(usagedata.c.G >= '2002-03 Quarter 1')
query = query.group_by(usagedata.c.H,usagedata.c.I)
query = query.order_by(usagedata.c.H.asc())

df_plain = pd.read_sql(query, conn)

Мне любопытно узнать, в чем разница между этими двумя подходами и почему один работает, а другой нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...