Интегрировать проект на основе SQLAlchemy с Django-rest - PullRequest
0 голосов
/ 22 октября 2018

У меня есть существующий проект на основе SQLAlchemy со следующей структурой

# __init__.py

import yaml
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base


try:
    with open('config.yaml', 'r') as yaml_config_file:
        config = yaml.safe_load(yaml_config_file)
except:
    raise Exception

Base = declarative_base()
Session = sessionmaker(bind=create_engine(config['db']))


# models.py:

   from fmgcore import Base
   class Image(Base):
     __tablename_- = 'image'
     ....
     ...



# service.py

from fmgcore import config, Session
import sqlalchemy.exc as sql_exc

log = logging.getLogger(__name__)


class Services(object):
  def __init__(self, config):
    self.config = config

  def create_image(self, name, filename,
                 disk_format,
                 size=None,
                 description=None):

    session = Session()

    try:
        session.add(...)
        session.commit(...)

    except sql_exc.IntegrityError as e:
        logging.info("Image with name {0} already exists".format(name))
        session.rollback()
    except sql_exc.SQLAlchemyError as e:
        session.rollback()
    finally:
        session.close()


def get_image():
    ####

Я хочу предоставить эти сервисы, используя REST Api с использованием Django-Rest.Я не хочу использовать модели Django.

Мой вопрос заключается в том, как мне использовать Services () в моем view.py, чтобы он не создавал несколько экземпляров механизма или нового соединения для каждого запроса REST, вместо этого использовал один и тот же пул.

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