【问题标题】:How to create a python rest API that supports multiple databases [closed]如何创建支持多个数据库的 python REST API [关闭]
【发布时间】:2016-01-26 02:21:56
【问题描述】:

这是我的设置:

我有一个 django 应用程序,它有 2 个用户:Bob 和 Jake

出于安全目的,Bob 和 Jake 都有一个与之关联的特定数据库。换句话说,如果 Bob 已登录,那么 Bob 进行的所有其余 API 调用都应该指向他自己的数据库(他应该无法访问 Jake 的数据库),反之亦然。

我想知道如何设置这种类型的 API,根据登录的人,请求被路由到正确的数据库。

此外,理想情况下,我希望这个 API 与我的 django 应用程序完全分离(它应该作为一个完全独立的应用程序存在)。

我想知道是否有人对如何设置这种类型的 API 有任何建议?我愿意使用烧瓶、django 等...

感谢您的帮助!!

【问题讨论】:

    标签: django api rest flask


    【解决方案1】:

    您可以使用 Flask 和 SQLAlchemy 轻松处理这个问题。创建指向不同数据库的不同 SQLAlchemy 引擎,从这些引擎创建会话,并相应地使用它们。

    SQLAlchemy 设置代码:

    bob_engine = create_engine('sqlite:////bob.db')
    BobSession = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=bob_engine))
    jake_engine = create_engine('sqlite:////jake.db')
    JakeSession = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=jake_engine))
    

    Flask 端点,使用 Flask-Login 的 current_user 对象:

    @app.route('/foo')
    def foo():
       if current_user.name == 'Jake':
            session = BobSession()
       else:
            session = JakeSession()
       # run some query with the session...
       session.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2017-09-23
      • 2013-03-12
      • 1970-01-01
      • 2016-01-30
      • 2011-08-07
      • 1970-01-01
      相关资源
      最近更新 更多