Oшибка при вызове нескольких SQL запросов
Пытаюсь выгрузить данные из БД:
import pandas as pd
# connection = my connection to DB
df = pd.read_sql(sql, connection)
print(df)
script.sql
set session calendar = iso;
with cte_emp(weekstart, weekend) as
(
select
min(calendar_date) as weekstart,
max(calendar_date) as weekend
from sys_calendar.calendar as cl
where cl.year_of_calendar >= 2020
or cl.calendar_date in ('2019-12-30', '2019-12-31')
group by week_of_year, year_of_calendar
)
select * from cte
В итоге получаю ошибку:
TypeError: 'NoneType' is not iterable
Однако всё работает без первой строчки в SQL запросе.
Подскажите, как выгрузить данные, но не убираю первую строку в SQL запросе?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Функция pd.read_sql() ожидает на вход один единственный SQL запрос.
Т.е. один SELECT ... statement.
set session calendar = iso; - это настройка параметров сессии и не имеет ничего общего с запросом.
Попробуйте воспользоваться sqlalchemy.orm.Session:
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
# an Engine, which the Session will use for connection
# resources
engine = create_engine('postgresql://scott:tiger@localhost/')
# create session and add objects
with Session(engine) as session:
session.execute('set session calendar = iso')
...