Я бы хотел использовать инфраструктуру Eve для создания API REST и проверки данных.Но я хочу использовать версию Eve для SQLAlchemy с бэкэндом rdbms.В документации Eve-SQLAlchemy ничего не говорится о том, как это сделать.
Например, у меня будет таблица базы данных с именем People
:
# sql_schema.py
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import column_property, relationship
Base = declarative_base()
class People(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True, autoincrement=True)
firstname = Column(String(80))
lastname = Column(String(120))
fullname = column_property(firstname + " " + lastname)
Позже я расскажу Еве об определениях моей базы данных:
from eve_sqlalchemy.config import DomainConfig, ResourceConfig
from sql_schema import People
# The default schema is generated using DomainConfig:
DOMAIN = DomainConfig({
'people': ResourceConfig(People)
}).render()
# now I can stuff in my validations, a bit klunkily
DOMAIN['people']['schema']['firstname'].update({'allowed': ['Pete']})
Выше работает!Если я пытаюсь сохранить People
с именем, отличным от «Пит», я получаю ошибку проверки.Но это немного сложно для проверки правильности после определения схемы, как это.Например, Ева выбирает ограничение максимальной длины 80 из определения таблицы People
.Было бы хорошо, если бы здесь также можно было указать разрешенное ограничение firstname
.Есть ли рекомендуемый подход, и поддерживается ли он вообще или может сломаться в будущей версии.