В Flask как мне сделать запрос к моей базе данных, используя SQLAlchemy, чтобы я фильтровал несколько вещей? - PullRequest
0 голосов
/ 29 марта 2020

У меня есть приложение в flask, которое предназначено для отчета о коэффициентах удержания сотрудников. Я хочу разбить результаты по компаниям и по тем, работают ли они в настоящее время или нет, и я хочу сделать заказ по их коэффициентам удержания.

Я хочу повторить следующий sql запрос в sql алхимии, но у меня проблемы.

Вот в основном запрос sql, который я хочу создать в sql алхимии:

select * from staffmembers where currentEmployee=1 group by company order by retention desc;

А вот моя flask модель:

class StaffMember(db.Model):
    __tablename__ = 'staffMembers'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text)
    position = db.Column(db.Text)
    company = db.Column(db.Text)
    startDate = db.Column(db.DateTime)
    endDate = db.Column(db.DateTime)
    retention = db.Column(db.Integer)
    currentEmployee = db.Column(db.Boolean, default=True, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))

Мой текущий запрос sqlalchemy:

staff = StaffMember.query.filter_by(user=current_user).group_by(company).order_by(StaffMember.retention.desc()).all()

Проблема в том, что на странице моих отчетов отображается только один человек на компанию, а не все люди в этой компании с этими конкретными данными.

Мой html код:

{% for person in staff %} 
    <div class="myform-outercontainer">
        <div  style="width: 650px;">
                <div style="height: 20px"></div>
                        <h3>Current Staff Members:</h3>
        <table>
            <tr>
                <th style="width: 50px" class="my-center">ID</th>
                <th class="my-center">Name</th>
                <th class="my-center">Position</th>
                <th class="my-center">Company</th>
                <th class="my-center" style="width: 100px">Start Date</th>
                <th class="my-center" style="width: 100px">Retention</th>

            </tr>
           <tr>
                <td class="my-center">{{person.id}}</td>
                <td class="my-center">{{person.name}}</td>
                <td class="my-center">{{person.position}}</td>
                <td class="my-center">{{person.company}}</td>
                <td class="my-center">{{person.startDate.strftime("%d/%m/%Y")}}</td>
                <td class="my-center">{{person.retentionNow()}}</td>

            </tr>
        </table>
    </div>
   </div>
{% endfor %}

Буду признателен за любую помощь! : -D

1 Ответ

0 голосов
/ 29 марта 2020
staff = StaffMember.query.filter_by(user=current_user).group_by(company).order_by(StaffMember.retention.desc()).all()

Этот запрос вернул бы все записи, которые соответствуют значению col пользователя с текущим пользователем, и в этой ситуации, я думаю, есть только одна запись на пользователя.

Я полагаю, вы ищете запрос за что-то вроде этого.

staff = StaffMember.query.filter_by(currentEmployee=True).group_by(company).order_by(StaffMember.retention.desc()).all()

, который дает вам всех сотрудников, отфильтрованных по currentEmployee и сгруппированных по компаниям и упорядоченных по коэффициенту удержания des c.

У вас почти все было просто пришлось поменять filter_by logi c.

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