• Как исправить ошибку Replacement index 1 out of range for positional args tuple?

    @Atroshchenko-Dima Автор вопроса
    Everything_is_bad, Спасибо, приравнял новые переменные к старым и все заработало
    Написано
  • Как исправить ошибку Replacement index 1 out of range for positional args tuple?

    @Atroshchenko-Dima Автор вопроса
    Everything_is_bad, а как именно мне можно это передать в код? ведь я передаю одинаковые переменные, выбранные пользователем в выпадающем списке в обе таблицы
    Написано
  • Как исправить ошибку Replacement index 1 out of range for positional args tuple?

    @Atroshchenko-Dima Автор вопроса
    1. Это объединение 2х идентичных таблиц, разница только в наполнении столбца "Наименование" у них.
    В сам sql запрос передаю 3 переменных массива(2 из них это выбор пользователем переменных из столбцов, а 3я возможность, выбор столбцов которые пользователь хочет видеть из БД)
    2. Показал полный traceback

    В таком виде все работает
    query = ("SELECT {} FROM raschett WHERE Наименование = ANY(%s) AND Месяц = ANY(%s) ;"
                        .format(",".join(["\"{}\"".format(c) for c in columns])))
    Написано
  • Как транспонировать строки в столбцы?

    @Atroshchenko-Dima Автор вопроса
    Дмитрий, задание у меня такое) именно запросом нужно
    Написано
  • Как транспонировать строки в столбцы?

    @Atroshchenko-Dima Автор вопроса
    Дмитрий, можно так сделать, но вопрос тот же, как привести именно к такому виду как в примере который я дал выше? т.е месяцы(1,2,3..12) нужно транспонировать в столбцы сохранив при этом сумму продаж, а первый столбцом чтоб шел год
    Написано
  • Как транспонировать строки в столбцы?

    @Atroshchenko-Dima Автор вопроса
    Akina, у меня не получается сделать в таком виде при помощи crosstab, можете, пожалуйста на моем примере показать.
    Пробовал вот так
    crosstab(select EXTRACT(YEAR FROM time) AS year, EXTRACT(month FROM time) AS month,SUM(cost) as sum_cost 
    FROM	 
    		dep
    		INNER JOIN prod ON prod.id = dep.id
    		INNER JOIN sales ON prod.id = sales.prod_id
    WHERE time >= '2018-01-01 00:00:00'
    AND city = 'town1'
    GROUP BY year, month
    ORDER BY year, month 
    )as itog_table(year int,1 int,2 int, 3 int,4 int,5 int,6 int,7 int,8 int,9 int,10 int,11 int,12 int);
    Написано
  • Как сгруппировать месячные значения в год?

    @Atroshchenko-Dima Автор вопроса
    Работаю в postgresql(извиняюсь что сразу не уточнил).
    Получаю такую ошибку
    ERROR:  функция year(timestamp without time zone) не существует
    LINE 1: select YEAR(time)
                   ^
    HINT:  Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов. 
    
    ОШИБКА:  функция year(timestamp without time zone) не существует
    Написано
  • Как правильно выполнить подключение sqlalchemy к postgresql?

    @Atroshchenko-Dima Автор вопроса
    Замена @ на %40 помогла, спасибо!
    Написано
  • Как получить числовой массив из базы данных?

    @Atroshchenko-Dima Автор вопроса
    o5a, Максим Припадчев

    сам запрос я прописал уже, у меня это выглядит так
    query = ("SELECT {} FROM fact_bp WHERE year = ANY(%s) AND indicators = ANY(%s) AND station_name = ANY(%s);"
                        .format(",".join(["\"{}\"".format(c) for c in columns])))
            rows = execute_query(query, (selected_years, selected_indicators, selected_stations))


    таблица выводится корректно, исходя из выбранных показателей и столбцов, все работает.

    но как мне лучше сейчас передать числа из выбранных столбцов для визуализации данных?
    т.е как в самом посте приведен пример для построение графика на matplotlib,
    ось x - это моя переменная selected_indicators, к примеру, она будет иметь вид ['Станция 1', 'Cтанция 2', ...]
    ось у - пользователь решил выбрать месяц Январь, показатель выработка, год 2022
    Теперь на ось у я должен тоже передать массив данных из столбца Январь в таком виде [9124, 8652, 7592]
    Вот этот момент не понимаю как реализовать.

    Либо я может что-то усложняю и есть более легкий/понятный способ для рисования графиков/диаграмм для БД?
    Если что можно использовать любые библиотеки, не обязательно matplotlib.
    Написано
  • Как получить числовой массив из базы данных?

    @Atroshchenko-Dima Автор вопроса
    Максим Припадчев, o5a,

    1)# Функция подключения к БД
    def get_connection():
    with psycopg2.connect(**params) as conn:
    return conn

    # Функция выполнения запроса
    def execute_query(query, params=None):
    conn = get_connection()
    cur = conn.cursor()
    cur.execute(query, params)
    rows = cur.fetchall()
    cur.close()
    conn.close()
    return rows

    2) selected columns - это я получаю имена выбранных пользователем столбцов

    4) В data_values я хочу получить массив, который будет соответствовать числам из выбранного пользователем столбца, к примеру, пользователь выбирает Год (1й столбец), наименование станции(2й столбец - в нем просто всегда будет написано наименование станции) и столбец "Январь"(3й столбец), в столбце "Январь" будут идти числа для выбранного года и одного из выбранный показателей, к примеру, выработка.

    Надеюсь стало понятнее.
    Написано
  • Как правильно указать ссылку на путь?

    @Atroshchenko-Dima Автор вопроса
    реально существуют файлы html в каталоге templates
    Написано
  • Как правильно указать ссылку на путь?

    @Atroshchenko-Dima Автор вопроса
    А вот в таком виде <a href="/" class="dotted-link">Форма</a> ссылка стала работать без настройки apache, спасибо!
    Написано
  • Как правильно указать ссылку на путь?

    @Atroshchenko-Dima Автор вопроса
    В таком виде у меня не работает ссылка 127.0.0.1:5000/index.html, ну т.е даже если я вручную вобью это в строку, домашняя страница при запуске сервера у меня выглядит именно как 127.0.0.1:5000, а вот уже остальные страницы как 127.0.0.1:5000/vss.html и т.п
    Написано
  • Почему не появляется иконка на вкладке браузера?

    @Atroshchenko-Dima Автор вопроса
    я даже когда в самой ошибке "GET /favicon-32x32.png HTTP/1.1" 404 - нажимаю на /favicon-32x32.png, у меня открывается иконка. Но в самом браузере все так же не видно
    Написано
  • Почему не появляется иконка на вкладке браузера?

    @Atroshchenko-Dima Автор вопроса
    drtvader, данный сайт выдал мне такой код
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
    , на что именно лучше поменять путь?
    Написано
  • Почему не появляется иконка на вкладке браузера?

    @Atroshchenko-Dima Автор вопроса
    drtvader, Весь мой проект лежит в папке T2, html файл лежит в папке templates.
    Саму иконку пробовал класть и в папку T2/templates, и просто в папку T2.
    Написано
  • Как избавиться от ошибки TypeError: argument 1 must be a string or unicode object: got tuple instead?

    @Atroshchenko-Dima Автор вопроса
    Рамис, Это мой первый проект такого типа, поэтому изначально просто гуглил про подключение к БД через python и наткнулся на psycopg, вот и выбрал его. В SQLAlchemy проще/удобнее работать?
    Написано
  • Как исправить ошибку psycopg2.InterfaceError: connection already closed?

    @Atroshchenko-Dima Автор вопроса
    Justa Gain, хорошо, спасибо!
    Написано
  • Как исправить ошибку psycopg2.InterfaceError: connection already closed?

    @Atroshchenko-Dima Автор вопроса
    Justa Gain, Я понимаю, что код связанный с БД реализован не лучшим образом, можете подсказать как написать это правильно/лучше? У меня, к сожалению, пока не хватает знаний..
    Написано
  • Как исправить ошибку psycopg2.InterfaceError: connection already closed?

    @Atroshchenko-Dima Автор вопроса
    Не подскажите как добавить проверку/реакцию на разрыв соединения с базой данных?
    или может быть в целом в моем коде подключение и запрос выполнены некорректно, т.к появляются idle in transaction?

    Так в моем коде реализовано подключение и сам запрос.
    def index():
        # соединение с БД
        with psycopg2.connect(**params) as conn:
            # создание объекта курсора для запуска команд PostgreSQL в базе данных
            cur = conn.cursor()
            cur.execute("SELECT * FROM fact_table;") 
            rows = cur.fetchall()
            cur.close()
        
        if request.method == "POST":
            with psycopg2.connect(**params) as conn:
                # создание объекта курсора для запуска команд PostgreSQL в базе данных
                cur = conn.cursor()
                cur.execute("SELECT {} FROM fact_table WHERE year = ANY(%s) AND indicators = ANY(%s) AND station_name = ANY(%s);"
                            .format(",".join(["\"{}\"".format(c) for c in columns])),(selected_years, selected_indicators, selected_stations))
                # Для получения доступа к сформированной выборке используем cur.fetchall()
                rows = cur.fetchall()
                cur.close()
    Написано