Pony Life #mlp #pony #пони #shorts
Скачать совместимый APK на ПК
↓ Скачать APK для ПК | Budge Studios | 288 | 4.17014 | 2021.1.0 | 4+ |
✔ ✔ ✔ My Little Pony: Мини-пони для ПК: Как скачать и установить на ПК Windows
Загрузите приложение, например My Little Pony: Мини-пони, на ПК с Windows! Прямая загрузка ниже:
Источник: pcappcatalog.com
Опыт создания web-приложения с Pony ORM
Недавно передо мной встала задача написать на Python web-приложение для разделения счёта в ресторане между участниками трапезы. Так как нужна DB для хранения данных о заказах и пользователях, встал вопрос выбора ORM для работы с базой. Разработка велась на Flask, так что сразу отметается Django ORM и выбор изначально пал в сторону SQLAlchemy.
С одной стороны эта ORM почти всемогущая, но за счет этого она довольно тяжела в освоении. Помучившись с алхимией какое-то время, я решил найти более простой вариант, чтоб разработка пошла быстрее. В итоге для проекта была выбрана Pony ORM.
В глаза сразу бросилось то, что синтаксис написания запросов к базе менее громоздкий, чем в алхимии. Также на написание программы уходит меньше времени и строк кода.
Я решил написать небольшую обзорную статью, чтоб поделится опытом использования Пони. Надеюсь, она поможет начинающим программистам быстрее освоить разработку приложений, работающих с базами данных.
Мультфильм Дружба — это чудо про Пони — Быть Бризи непросто
Преимущества PonyORM:
- При написании запросов используется исключительно питоновский синтаксис (генераторные выражения или lambda функции)
- Автоматическое кэширование запросов и объектов
- Полная поддержка композитных ключей
В качестве основного недостатка я бы выделил отсутствие механизма миграций (разработчики сейчас работают над этим)
Взяв в расчет всё вышеперечисленное, можно сказать, что Pony довольно хорошее решение для работы с базами данных, кроме тех случаев, когда часто возникает необходимость изменять схему базы на продакшене.
Далее я продемонстрирую основы работы с Pony на примере фрагментов кода из проекта, о котором я говорил выше.
Настройка окружения
Для начала нужно через pip установить Pony:
pip install pony
Также нужно установить DB API для нужной СУБД:
- PostgreSQL: psycopg или psycopg2cffi
- Oracle: cx_Oracle
- MySQL: PyMySQL
После этого импортируем в проект Pony:
from pony.orm import *
Создание объекта БД и привязка его к существующей базе
Объект базы данных — это представление базы в питоновском коде. С базой работа происходит через этот объект.
db = Database()
Далее этот объект нужно привязать к базе. Это можно сделать передав нужные параметры в конструктор класса Database либо вызвав метод db.bind() с нужными параметрами. Для разных СУБД они различаются. В данном проекте я работаю с базами SQLite (на этапе разработки) и PostgreSQL (продакшен).
Для быстрого переключения между СУБД я прописал параметры в словаре, который храню в отдельном файле и передаю в конструктор объекта Database. Файл с параметрами подключения у меня выглядит так:
settings = dict( sqlite=dict(provider=’sqlite’, filename=’pony.db’, create_db=True), postgres=dict(provider=’postgres’, user=’pony’, password=’pony’, host=’localhost’, database=’pony’) )
А сама привязка происходит при создании объекта базы :
db = Database(**settings[‘postgres’])
Создание сущностей
Сначала я сделал схему базы в редакторе для создания ER диаграмм на сайте пони. Удобен он тем, что он может автоматически сгенерировать Python код для описания сущностей по сделанной в редакторе схеме. Сущности можно описать и вручную, но я воспользовался редактором для экономии времени.
На её основе был сгенерирован следующий код:
from datetime import datetime from pony.orm import * db = Database() class User(db.Entity): auto=True) fullname = Optional(str) password = Optional(str) nickname = Optional(str) lended = Set(‘Credit’, reverse=’lender’) borrowed = Set(‘Credit’, reverse=’borrower’) credit_editions = Set(‘CreditEdition’, reverse=’user’) sessions = Set(‘UserInSession’) affected_editions = Set(‘CreditEdition’, reverse=’affected_user’) class Session(db.Entity): auto=True) title = Optional(str) start = Optional(datetime) end = Optional(datetime) ordereders = Set(‘OrderedItem’) users = Set(‘UserInSession’) class OrderedItem(db.Entity): auto=True) session = Required(Session) title = Optional(str) price = Optional(int) user_in_sessions = Set(‘UserInSession’) class Credit(db.Entity): auto=True) lender = Required(User, reverse=’lended’) borrower = Required(User, reverse=’borrowed’) value = Optional(int) credit_editions = Set(‘CreditEdition’) class UserInSession(db.Entity): auto=True) user = Required(User) session = Required(Session) orders = Set(OrderedItem) value = Optional(int) class CreditEdition(db.Entity): auto=True) user = Required(User, reverse=’credit_editions’) affected_user = Required(User, reverse=’affected_editions’) credit = Required(Credit) old_value = Optional(int) new_value = Optional(int) db.generate_mapping()
Обобщив, можно сказать, что этот редактор может ускорить разработку для новичка в вопросах работы с базами.
Запросы
Обращение к объекту по первичному ключу в пони реализовано оператором доступа к элементу (квадратные скобки). Например:
session = Session[sid]
В данном примере из таблицы Session берется строка, в которой sid.
Также, как я уже говорил выше, запросы в Pony можно писать генераторными выражениями, что делает их написание гораздо удобнее, чем в алхимии.
Снизу приведен пример, в котором базе посылается запрос на выборку пользователей, которые являются участниками данной сессии и не являются виртуальными пользователями.
users = select(u for u in User if u not in session.users.user and not u.virtual)
Надеюсь, моя статья оказалась кому-нибудь полезной. Если вас тоже заинтересовал Pony, внизу я оставлю ссылки на документацию и на телеграм-канал комьюнити.
Источник: habr.com
Приложение My Baby Unicorn 2. TutoTOONS — отзыв
Уход за радужной пони Спаркл! Насладитесь игровым процессом вместе с детьми!
Рада вас приветствовать!
Представляю Вашему вниманию интерактивную игру для детей «My Baby Unicorn 2» от разработчика TutoTOONS!
Яркая, красочная игра с невероятно интересным сюжетом привела меня в полный восторг!
Игра понравится как девочкам, так и мальчикам!
Ещё одно преимущество игры в том, что в приложении нет платных встроенных покупок, все действия можно выполнять без ограничений!
В игре есть реклама, благодаря которой можно открывать действия, вещи, менять интерьер, покупать еду и т.д.
Детям понравится ухаживать за своим собственным милым единорогом Спаркл.
Мы будем наблюдать, как Спаркл растет, а нашей задачей будет создать ей самые лучшие условия!
Изначально малыш Спаркл находится в волшебной яйце! Нажимаем на яйцо несколько раз, чтобы вскрыть внешнюю скорлупу.
Через несколько секунд из яйца появляется милый пони, которого зовут Спаркл!
На начальном этапе игрового процесса, когда радужный пони совсем малыш, необходимо выполнять две потребности.
Пони проголодался, и нашей задачей будет напоить Спаркл молоком.
Нажимаем на иконку с изображением унитаза, чтобы пони могла справить нужду.
У пони появляется ещё одна важная потребность! Отправляемся в ванну, чтобы помыть единорога.
Как и все существа, пони нуждается в отдыхе. Выключаем светильник, чтобы пони уснула.