Рубрики
Без рубрики

Строительство долгового трекера с Python и Fauna

Написано в связи с программой записи с фауной. Эта статья посвящена изучению C … Tagged Fauna, Serverless, Python, WebDev.

Написано в связи с Напишите с фауной программа

Эта статья посвящена изучению CRUD -возможностей Фауны по созданию веб -приложения Python для управления долгами. Мы будем создавать диспетчер долга, который обеспечивает функциональные возможности для отслеживания долгов, которые пользователи понесли с помощью Python и Flask.

Фауна является гибкой, удобной для разработчиков, транзакционной облачной базы данных, доставленной в качестве безопасного API данных, который предоставляет два интерфейса: GraphQL и язык запросов Fauna (FQL). Он включает в себя функциональность для хранения коллекций, индексов и других баз данных (многоцелевого). Чтобы узнать больше о фауне, посетите Официальная документация Анкет

Примечание. Остальная часть этой статьи предполагает, что у вас есть справедливое понимание фауны, питона и колбы. Для подробного учебного пособия по базам данных без серверов и фауны, сначала ознакомьтесь с моей фауной.

Создать базу данных фауны

Нам нужно создать базу данных для менеджера долга на панели панели Фауны. Если вы не создали учетную запись на фауне до сейчас, создайте одну на Сайт Фауны.

На приборной панели нажмите на Новая база данных Кнопка, указать имя для базы данных, затем нажмите Сохранить кнопка.

Создать коллекции баз данных

Теперь нам нужно создать коллекцию фауны для хранения данных, собранных в недавно созданной базе данных. Коллекция аналогична таблицам SQL, содержащих аналогичные характеристики, например, коллекцию пользователей с информацией о пользователях в базе данных.

Чтобы создать коллекцию:

  • Перейдите к Коллекции Вкладка на боковой панели фауны (левая сторона экрана)
  • Нажмите на Новая коллекция кнопка
  • Предоставьте название для коллекции
  • Нажмите Сохранить кнопка

Создать индексы коллекции

Нам нужно создать индекс для сбора базы данных. Индекс фауны позволяет нам просматривать данные, хранящиеся в сборе базы данных на основе конкретных атрибутов.

Чтобы создать индекс:

  • Перейти к Индексы Вкладка на боковой панели фауны (левая сторона экрана)
  • Нажмите на Новый индекс кнопку и предоставьте необходимую информацию
  • Нажмите Сохранить кнопка.

Генерировать ключ безопасности базы данных

Наконец, нам нужно создать Ключ безопасности Чтобы подключить базу данных к приложению. Перейти к Безопасность Вкладка на боковой панели фауны (левая сторона экрана), нажмите на Новый ключ Кнопка, предоставьте необходимую информацию, а затем нажмите Сохранить кнопка.

После того, как вы это сделаете, Фауна представит вам вашу Секретный ключ Анкет Скопируйте ключ немедленно и храните его где -нибудь легко извлечь, потому что он будет отображаться только один раз.

Клонировать репозиторий проекта

Для удобства я написал приложение Flask с пользовательским интерфейсом Bootstrap, который мы будем использовать в этой статье. Чтобы начать, нам нужно клонировать Мой репозиторий и инициализируйте приложение так:

git clone https://github.com/LordGhostX/fauna-debt-tracker   
cd fauna-debt-tracker

Установите требования проекта

Нам нужно установить внешние библиотеки, требуемые приложением, прежде чем мы сможем его запустить. В терминале тип:

pip install -r requirements.txt

Наконец, запустите приложение, чтобы убедиться, что оно работает. В терминале тип:

python3 app.py

Настройка параметров проекта

Чтобы настроить проект, откройте app.py Задайте и замените FAUNA_SECRET_KEY переменная заполнителя с Ключ безопасности сгенерировано ранее. Вы также можете изменить приложение Секретный ключ или принесите эти значения, используя переменные среды Анкет

Для менеджера долга мы рассмотрим четыре основные операции постоянного хранения, создать (c), читать (r), обновление (u) и удалить (d), используя фауну.

Создание новых документов в фауне

В нашем add_loan Маршрут, мы использовали фауну Создать Функция для хранения собранных данных кредита в нашей базе данных кредиты коллекция.

@app.route("/loans/add/", methods=["POST"])
def add_loan():
    name = request.form.get("name")
    amount = request.form.get("amount")
    date = request.form.get("date")

    loan_data = client.query(
        q.create(
            q.collection("loans"), {
                "data": {
                    "name": name,
                    "amount": float(amount),
                    "pending": True,
                    "date_created": datetime.strptime(date, "%Y-%m-%d").astimezone(tz=tz.tzlocal())
                }
            }
        )
    )

    flash("You have successfully added loan information!", "success")
    return redirect(url_for("loans"))

Создать Функция добавляет новый документ в коллекцию. Это требует Collection_ref Параметр, который указывает, какой сборник мы должны создать документ, и param_object параметр, который содержит данные документа и дополнительные метаданные.

Чтение документов из фауны

В нашем кредиты Маршрут, мы использовали фауну Страница Функция для извлечения Ссылки хранимых кредитов в нашей базе данных, затем Получить Функция для запроса данных каждого документа с их Ссылка Анкет

@app.route("/loans/")
def loans():
    loans = client.query(
        q.paginate(
            q.match(q.index("loans_by_pending"), True),
            size=100_000
        )
    )
    loans_data = [
        q.get(
            q.ref(q.collection("loans"), loan.id())
        ) for loan in loans["data"]
    ]
    return render_template("loans.html", loans_data=client.query(loans_data))

Обновление документов в фауне

В нашем Update_loan Маршрут, мы использовали фауну Обновление Функция для обновления суммы кредита документов в нашей коллекции. Обновление Функция принимает Ссылка Параметр, который указывает на обновление документа, и param_object параметр, который содержит данные документа для обновления.

@app.route("/loans/update/", methods=["POST"])
def update_loan():
    action = request.form.get("action")
    amount = request.form.get("amount")
    loan_id = request.form.get("loanID")

    loan_data = client.query(
        q.get(
            q.ref(q.collection("loans"), int(loan_id))
        )
    )

    old_amount = loan_data["data"]["amount"]
    if action == "Borrow More":
        new_amount = old_amount + float(amount)
    elif action == "Repay Loan":
        new_amount = old_amount - float(amount)

    client.query(
        q.update(
            q.ref(q.collection("loans"), int(loan_id)), {
                "data": {
                    "amount": new_amount
                }
            }
        )
    )

    flash("You have successfully updated loan information!", "success")
    return redirect(url_for("loans"))

Удаление документов из фауны

В нашем clear_loan Маршрут, мы использовали фауну Удалить Функция удаления документа из базы данных с указанным Ссылка Анкет Удалить Функция удаляет документ. Это включает в себя пользовательские документы, плюс системные документы для Коллекции , Индексы , Базы данных , и т.д.

@app.route("/loans/clear//")
def clear_loan(loan_id):
    client.query(
        q.delete(
            q.ref(q.collection("loans"), loan_id)
        )
    )

    flash("You have successfully cleared loan information!", "success")
    return redirect(url_for("loans"))

В этой статье мы построили трекер долгов с базой данных Fauna без серверов и Python. Мы увидели, как легко интегрировать фауну в приложение Python, и получили возможность изучить некоторые из ее основных функций и функций.

Исходный код менеджера долга доступен на GitHub Анкет Если у вас есть какие -либо вопросы, не стесняйтесь обращаться ко мне в Twitter: @Lordghostx

Оригинал: “https://dev.to/lordghostx/building-a-debt-tracker-with-python-and-fauna-53hh”