@lkm_siral

Как получить данных из одной базы и другой базы под одну переменную?

В моей базе данные есть 4 колонки (id | chatid | userid | content), в userid пишется id пользователя отправившего сообщение в чат. Мне нужно вывести в jinja2 content (из базы с чатами), name и group (из базы с пользователями) в каждом сообщение которое есть в ticket_chat.

Сейчас:
649ab5500929c948783103.png

Как должно работать:
649ab55cf06ef116024849.png

База с чатами:
649ab2447a368613725508.png

База с пользователями:
649ab277a7dc7044016086.png

Код:
@app.route('/support/ticket/<int:ticket_id>')
def support_ticket(ticket_id):
    userid = session['userid']
    if userid:
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM ticket WHERE id = % s and userid = % s', (ticket_id, userid,  ))
        ticket = cursor.fetchone()
        if ticket:
            ticket_user_id = ticket['userid']
            cursor.execute('SELECT * FROM users WHERE id = % s', (ticket_user_id, ))
            ticket_user = cursor.fetchone()

            d_create = ticket['data_create']
            data_created = d_create.strftime('%d.%m.%Y %H:%M')

            if ticket_user:
                ticket_admin_id = ticket['adminid']
                cursor.execute('SELECT * FROM users WHERE id = % s', (ticket_admin_id,))
                ticket_admin = cursor.fetchone()

                sql_check_msg = f"SELECT * FROM ticket_message WHERE chatid = {ticket_id}"
                cursor.execute(sql_check_msg)
                msg = cursor.fetchall()

                return render_template("support/support_ticket.html", ticket=ticket, t_user=ticket_user,
                                       t_admin=ticket_admin, data_created=data_created, msg=msg)
            else:
                return redirect("/support")
        else:
            return redirect("/support")
    return redirect("/auth")
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
Если обе базы в одной СУБД вы можете это вообще одним запросом делать
SELECT A.*, B.* FROM db1.table1 A LEFT JOIN db2.table1 B ON A.id = B.id

Ну и у меня есть подозрение, что вы путаетесь в терминологии, и на самом деле все проще, и у вас одна база, но разные таблицы.
Просто JOIN это для вас какой-то страшный зверь, а не один из основных инструментов СУБД.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы