Работа с базой данных через SQLAlchemy
FastAPI поддерживает работу с самыми разными системами баз данных: PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server и т.д. Причем мы не ограничены только реалиционными базами данных и равным образом использовать и нереляционные, так называемые NoSQL-системы баз данных.
При работе с базами данных самым простым решением является использование специальных инструментов — ORM (Object Relational Mapper), которые позволяют абстрагироваться от строения базы данных в конкретной СУБД и позволяет автоматически связать сущности в коде Python с таблицами в базе данных. В FastAPI наиболее распространным ORM-инструментом является SQLAlchemy ORM
Рассмотрим работу с базой данных через SQLAlchemy ORM на примере SQLite, поскольку SQLite не требует установки сервера или каких-то дополнительных инструментов. Кроме того, перейти от одной СУБД к другой не составить особого труда и почти не потребует изменения кода взаимодействия с БД, за исключением пары строк кода.
Прежде всего нам надо установить сам SQLAlchemy с помощью команды
pip install sqlalchemy
Определение строки подключения к БД
Прежде всего для подключения к базе данных необходима строка подключения, которая включает адрес базы данных и другие различные параметры, необходимые для подключения. Для разных СУБД строка подключения может отличаться. Пример строки подключения к SQLite:
# строка подключения SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
Для sqlite строка подключения начинается с sqlite:// , затем идет относительный или абсолютный путь к файлу:
sqlite:///относительный_путь/file.db sqlite:////абсолютный_путь/file.db
В данном случае это «./sql_app.db», который указывает, что файл базы данных будет называться «sql_app.db» и будет располагаться в текущей папке.
В зависимости от конкретной субд строка подключения будет различаться. Так, если бы мы подключись бы к базе данных PostgreSQL, то строка подключения имела бы следующий формат:
SQLALCHEMY_DATABASE_URL = "postgresql://user:password@postgresserver/db"
где user — имя пользователя на сервере PostgreSQL, password — пароль, postgresserver — адрес сервера, а db — имя базы данных на сервере.
При подключении к другим системам баз данных по сути это единственная строка кода, которая потребует изменения.
Определение движка
После определения строки подключения создается движок SQLAlchemy с помощью функции create_engine() :
from sqlalchemy import create_engine SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db" # создание движка engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args= )
Первый параметр функции указывает на строку подключения — то есть по сути базу данных, к которой идет подключение.
Второй параметр — дополнительные параметры подключения в виде словаря connect_args . В частности, элемент «check_same_thread»: False предназначен только для SQLite и указывает, что для взаимодействия с базой данных SQLite в рамках одного запроса может использоваться больше одного потока. Зачем это надо? По умолчанию SQLite разрешает взаимодействовать с БД только одному потоку, чтобы один поток обрабатывал отдельный запрос, что позволяет предотвратить использование одного потока для разных запросов. Но в FastAPI в рамках одного и того же запроса с базой данных могут взаимодействовать более одного потока. Собственно поэтому необходима подобная настройка для получения необходимых разрешений. При этом каждый запрос будет получать свой собственный сеанс подключения к базе данных через механизм внедрения зависимостей, поэтому в механизме по умолчанию нет необходимости.
При работе с другими СУБД достаточно указать только адрес подключения:
engine = create_engine(SQLALCHEMY_DATABASE_URL)
Определение моделей
Модели представляют классы, которые соответствуют определению таблиц в базе данных и объекты которых хранятся в этих таблицах. И одним из преимуществ SQLAlchemy является то, что мы можем работать таблицами через эти модели-классы языка Python, не прибегая к созданию запросов на языке SQL.
Для создания моделей необходима базовая модель, от которой потом наследуются остальные модели. Для создания базовой модели можно использовать различные способы, но самый короткий — создания класса модели с помощью функции declarative_base() :
from sqlalchemy.orm import DeclarativeBase class Base(DeclarativeBase): pass
То есть в данном случае определяется класс Base — базовая модель. Затем уже можно определить конкретные модели, данные которых будут храниться в БД. Например:
from sqlalchemy.orm import DeclarativeBase from sqlalchemy import Column, Integer, String class Base(DeclarativeBase): pass class Person(Base): __tablename__ = "people" primary_key=True, index=True) name = Column(String) age = Column(Integer,)
Здесь определена модель Person, которая представляет пользователя. Она наследуется от Base и определяет ряд атрибутов.
Атрибут __tablename__ хранит имя таблицы, с которой будет сопоставляться текущая модель. То есть данные класса Person будут храниться в таблице «people».
Для хранения данных в классе модели определяются атрибуты, которые сопоставляются со столбцами таблицы. Такие атрибуты в качестве значения получаются объект Column . В данном случае класс Person определяет три таких атрибута: id, name и age, для которых в таблице people будут создаваться одноименные столбцы.
Класс Column с помощью параметров конструктора определяет настройки столбца в таблицы. Здесь в конструктор вначале передается тип столбца. Так, у id и age тип столбца — Integer , то есть целое число. А столбец name представляет тип String, то есть строку.
Кроме того, в конструктор можно передать ряд дополнительных параметров. Так, для столбца id передаются параметры primary_key и index . Значение primary_key=True указывает, что данный столбец будет представлять первичный ключ. А параметр index=True говорит, что для данного столбца будет создаваться индекс.
Создание базы данных и таблиц
Для создания базы данных и таблиц по метаданным моделей применяется метод Base.metadata.create_all() . Его ключевой параметр — bind принимает класс, который используется для подключения к базе данных. В качестве такого класса применяется созданный ранее движок SQLAlchemy. Если база данных и все необходимые таблицы уже имеются, то метод не создает заново таблицы.
Посмотрим на простейшем примере. Все объединим и определим в файле приложения следующий код:
from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase from sqlalchemy import Column, Integer, String from fastapi import FastAPI # строка подключения SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db" # создаем движок SqlAlchemy engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args= ) #создаем базовый класс для моделей class Base(DeclarativeBase): pass # создаем модель, объекты которой будут храниться в бд class Person(Base): __tablename__ = "people" primary_key=True, index=True) name = Column(String) age = Column(Integer,) # создаем таблицы Base.metadata.create_all(bind=engine) # приложение, которое ничего не делает app = FastAPI()
После запуска приложения в папке проекта будет создана таблица sql_app.db:
Мы можем открыть эту базу данных с помощью любой программы для просмотра баз данных sqlite (например, с помощью DB Browser for SQLite) и увидеть содержимое бд:
SoapUI — Установка и настройка
SoapUI — это кроссплатформенный инструмент. Он поддерживает операционные системы Windows, Linux и Mac.
Предпосылки
- Процессор — 32-битный или 64-битный процессор с тактовой частотой 1 ГГц или выше.
- ОЗУ — 512 МБ ОЗУ.
- Место на жестком диске — минимум 200 МБ на жестком диске для установки.
- Версия операционной системы — Windows XP или новее, MAC OS 10.4 или новее.
- ЯВА — ЯВА 6 или позже.
Процессор — 32-битный или 64-битный процессор с тактовой частотой 1 ГГц или выше.
ОЗУ — 512 МБ ОЗУ.
Место на жестком диске — минимум 200 МБ на жестком диске для установки.
Версия операционной системы — Windows XP или новее, MAC OS 10.4 или новее.
ЯВА — ЯВА 6 или позже.
Процесс загрузки
Шаг 1. Перейдите на сайт www.soapui.org и нажмите «Загрузить SoapUI».
Шаг 2 — Нажмите «Получить», чтобы загрузить SoapUI с открытым исходным кодом. Начнется загрузка 112 МБ .exe файла в систему. Подождите, пока процесс загрузки не будет завершен.
Процесс установки
Шаг 1 — После загрузки запустите файл .exe с именем «Запуск от имени администратора».
Windows запустит процесс установки, как показано на следующем снимке экрана.
Шаг 2 — После настройки в окне процесса отобразится следующий экран, нажмите Далее.
Шаг 3 — Примите лицензионное соглашение и нажмите Далее.
Шаг 4 — Выберите каталог установки или оставьте его в качестве пути по умолчанию, выбранного системой. Нажмите кнопку «Далее.
Шаг 5 — Выберите компоненты, которые вы хотите установить. Нажмите кнопку «Далее.
Шаг 6 — Примите лицензионное соглашение для HermesJMS и нажмите Далее.
Шаг 7 — Выберите целевой каталог для сохранения учебников и нажмите Далее.
Шаг 8 — Выберите расположение папки меню «Пуск» или оставьте местоположение по умолчанию как есть и нажмите «Далее».
Шаг 9 — Установите флажок «создать значок на рабочем столе» и нажмите «Далее».
Теперь установка начинается. Это займет несколько минут.
Шаг 10 — После завершения установки нажмите Готово в следующем мастере.
После нажатия кнопки «Готово» запускается SoapUI.
- Строка меню
- Панель инструментов
- Панель навигации проекта
- Свойства рабочей области
- Панель журнала
Процесс настройки
Первым шагом является создание рабочей области, которая может содержать несколько проектов.
Шаг 1 — Перейдите в Файл → Новая рабочая область.
Шаг 2 — Добавьте название рабочей области и нажмите ОК.
Шаг 3 — Теперь выберите путь, по которому будет сохранено рабочее пространство XML.
Шаг 4 — Выберите путь и нажмите Сохранить.
Рабочая область создается, как показано на следующем снимке экрана. Свойства рабочей области также выставлены.
Подключение к бд mysql через консоль
Для удалённого компьютера создал пользователя типа ‘user’@’mypc’ как мне теперь к нему подключиться на сервере? С удалённого ПК подключаюсь так:
mysql -h serverSQL -u user -p
Как подключиться от имени этого пользователя на сервере?
Отслеживать
задан 2 сен 2016 в 15:37
1,826 3 3 золотых знака 30 30 серебряных знаков 64 64 бронзовых знака
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Вы не сможете подключиться локально из под учетной записи удаленного пользователя ‘user’@’mypc’, если только вместо mypc вы не указали любой хост ‘user’@’%’. Если mypc — это адрес удаленного сервера, сервер MySQL будет ждать обращений именно с него.
Для локального входа из под пользователя user, вам потребуется локальная учетная запись ‘user’@’localhost’ или ‘user’@’127.0.0.1’, тогда вы сможете входить так
mysql -u user -p
или просто по команде mysql , если пропишите в .my.cnf в секции [client] имя пользователя и его пароль
[client] user=user password=pass
3) Установка и настройка
В этом руководстве мы продемонстрируем шаги по загрузке, установке и настройке SOAP UI (версия с открытым исходным кодом).
Ниже приведены требования к программному и аппаратному обеспечению для различных платформ.
В этом руководстве установка выполняется в среде Windows. Процесс остается таким же для других ОС.
Вот дорожная карта для процесса установки
Часть A: Загрузка
- Перейдите на https://www.soapui.org/downloads/latest-release.html.
- Прокрутите вниз и выберите загрузчик в зависимости от вашей операционной системы. В этом руководстве мы установим пользовательский интерфейс SOAP в 64-разрядной операционной системе Microsoft Windows.
Часть Б: Установка
Шаг 1: После загрузки запустите файл как «Администратор», как показано ниже
Шаг 2: В мастере установки нажмите «Далее», чтобы продолжить.
Шаг 3: Выберите каталог установки или оставьте каталог установки по умолчанию как есть.
Шаг 4: Выберите компоненты, которые вы хотите установить.
- SOAP UI установлен по умолчанию и НЕ настраивается пользователем.
- Source — Включите, если вы хотите получить доступ к исходному коду SOAP-UI. Мы не выбрали его.
- Hermes JS — включите, если приложение требует тестирования JMS.
- Учебник — включите, если вы хотите получить доступ к учебникам по SOAP-UI После установки.
Шаг 5: Примите лицензионное соглашение и нажмите «Далее», чтобы продолжить.
Шаг 6: Выберите расположение папки для учебников или оставьте расположение по умолчанию как есть и нажмите «Далее».
Шаг 7: Выберите расположение папки меню «Пуск» или оставьте расположение по умолчанию как есть и нажмите «Далее».
Шаг 8. Установите флажок «создать значок на рабочем столе» и нажмите «Далее».
Шаг 9: Установка начинается, и после ее завершения мастер показывает следующий статус. Нажмите «Готово».
Шаг 10: После нажатия кнопки «Готово» запускается интерфейс SOAP.
- Строка меню
- Панель быстрого доступа
- Область навигации проекта
- Свойства рабочей области
- Лог зона
Часть C: Настройка
Давайте сначала разберемся со структурой проекта в интерфейсе SOAP.
- Первым шагом в интерфейсе SOAP является создание рабочей области. С рабочим пространством может быть связано несколько проектов. Пользователи могут создавать более одного рабочего пространства. В версии SOAP UI Pro мы можем беспрепятственно переключать среды, чтобы сопоставить их с различными конечными точками.
- Для каждого проекта мы можем создать несколько наборов тестов.
- К каждому тестовому набору может быть прикреплено несколько тестовых случаев.
- Для каждого теста может быть несколько шагов теста, связанных с ним.
Ниже приведено графическое представление структуры рабочего пространства в SOAP-UI.
Шаг 1: Первый шаг — создать рабочее пространство. Создайте рабочее пространство, как показано ниже. Все артефакты, которые мы собираемся создать с этого момента, будут находиться в этом рабочем пространстве.
Шаг 2. Введите имя для рабочей области и нажмите «ОК».
Шаг 3: Теперь пользователь должен выбрать путь для сохранения этого рабочего пространства.
- Выберите путь, по которому должно быть сохранено рабочее пространство
- Имя XML рабочей области, которое должно быть расположено, когда пользователь хочет открыть рабочую область в будущем.
- Нажмите «Сохранить».
Шаг 4: Рабочая область создается, как показано ниже. Мы также можем получить доступ к свойствам рабочего пространства на вкладке «Свойства рабочего пространства».
Теперь мы успешно настроили SOAP-UI после загрузки и установки, так что мы можем продолжать выполнять тестирование.
Базовая навигация по GUI
ФАЙЛ МЕНЮ:
- Понимание наиболее часто используемых переходов в SOAP-UI очень важно для плавной навигации при работе над проектами в реальном времени. Давайте сначала посмотрим на меню файлов.
- «Новый проект SOAP» позволяет пользователю создать проект путем импорта запроса SOAP.
- «Новый проект REST» позволяет пользователю создать проект путем импорта запроса REST.
- «Импорт проекта» позволяет пользователю импортировать весь проект, найдя соответствующий XML.
- «Сохранить все проекты» позволяет пользователю сохранить все открытые проекты в один клик.
- «Закрыть все открытые проекты» закрывает все проекты, открытые в этой рабочей области.
- «Переименовать рабочее пространство» позволяет пользователю переименовывать ранее созданное рабочее пространство.
- «Switch Workspace» позволяет пользователю переключаться между рабочими пространствами.
- «Предпочтения» позволяет пользователю настроить интерфейс SOAP. Мы разберемся с этим в следующем разделе.
- «Сохранить настройки» позволяет пользователю сохранять свои настройки. Когда пользовательский интерфейс SOAP открывается в следующий раз, он использует сохраненные пользователем настройки.
ФАЙЛ >> ПРЕДПОЧТЕНИЯ >> НАСТРОЙКИ HTTP:
- Теперь давайте поймем «Настройки» из меню «Файл». После нажатия «Предпочтения» в меню «Файл» открывается диалоговое окно ниже.
- Мы подробно рассмотрим наиболее часто используемые «настройки HTTP».
- Обозначает версию HTTP, которая будет использоваться для запроса и ответа.
- «Заголовок User-Agent» позволяет предопределить пользователя с помощью этой опции. Если он не определен, он использует заголовок http клиента по умолчанию.
- Позволяет пользователю указать метод сжатия. Это может быть либо gzip, либо deflate, либо None.
- «Если отмечено», разрешает сжатый ответ от хостов.
- «If Checked» отключает распаковку сжатых ответов.
- «If Checked» закрывает HTTP-соединение для каждого запроса SOAP.
- «Если отмечено», позволяет пользователю указать информацию аутентификации для исходящих запросов.
- Позволяет пользователю ограничить максимальное количество байтов, которые будут прочитаны из ответа. Ноль соответствует неограниченному размеру.
ФАЙЛ >> ПРЕДПОЧТЕНИЯ >> НАСТРОЙКИ WSDL:
- Теперь мы подробно рассмотрим наиболее часто используемые «Настройки WSDL».
- Кэширование WSDL Включает и выключает кэширование WSDL.
- Создает пример значений в запросах
- Позволяет пользователям всегда включать дополнительные элементы в сгенерированные запросы
- Ответные сообщения печатаются в редакторе ответов.
- Позволяет пользователю указать каталог, содержащий файлы схемы (.xsd), при проверке запросов WSDL. При изменении содержимого этого каталога SOAP UI требует перезагрузки.
- В целях экономии места минимальный размер сообщения, подлежащего сжатию в файле проекта SoapUI.
ФАЙЛ >> ПРЕДПОЧТЕНИЯ >> НАСТРОЙКИ UI:
- Теперь подробно рассмотрим наиболее часто используемые «настройки пользовательского интерфейса».
- Закрывает все проекты при запуске SOAP UI для лучшего времени запуска и потребляет меньше памяти.
- Отображает описание всякий раз, когда доступно.
- Автоматически сохраняет все проекты при выходе из SOAP UI.
- Перед сохранением пользовательский интерфейс SOAP создает резервную копию проекта. Если включено, резервная папка должна быть упомянута.
- Отображает и раскрывает вкладки журнала при запуске SOAP UI.
- Отображает диалоговое окно «Начальная страница» при запуске SOAP UI.
- После отключения всплывающей подсказки отключается всплывающая подсказка, когда пользователь наводит указатель мыши на опции / кнопки во время навигации.
- Давайте посмотрим на важные пункты меню справки.
- Показывает домашнюю страницу онлайн-справки, доступную на www.soapui.org
- Позволяет зарегистрированным пользователям оставлять вопросы на форуме и получать помощь от сообщества.
- Проверяет наличие последних обновлений и устанавливает, если они там есть.
- Позволяет пользователю перейти на домашнюю страницу www.soapui.org
- Отображает информацию о сборке и версии пользовательского интерфейса SOAP.
Предстоящие учебные пособия не только помогут вам понять, как создать набор тестов, тестовый набор и шаги тестирования, но также позволят вам тестировать запросы SOAP и как их проверять.