如何从烧瓶应用程序创建新模式

问题描述 投票:1回答:1

我有flask应用程序,我正在尝试通过多种模式为用户实现多租户。当用户注册时,我正在尝试使用应用程序中的用户名创建新的架构,并在该特定架构中创建新的两个表。

我可以使用psql控制台使用数据库创建新的架构

postgres=# CREATE SCHEMA schema_name;

如何从flask应用程序创建模式?

postgresql flask flask-sqlalchemy
1个回答
1
投票

我已经实现了相同的目标。我的目标是创建一个具有共享数据库和单独架构的SaSS应用。

因此,当用户注册我的高级计划时,我的代码将为我的用户创建一个架构。

首先导入所需的模块。

from sqlalchemy import create_engine, MetaData, Table

在用户注册过程中,我添加了以下代码。 org_id是一个随机字符串,它是我的架构。另外,我必须在该架构内创建一个post表。我还需要将模式名称保存在用户表中,这有助于稍后仅在该模式中过滤结果。

# Create schema
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
if not engine.dialect.has_schema(engine, org_id):
    engine.execute('CREATE SCHEMA IF NOT EXISTS %s' % org_id)

    # Create table inside this new schema
    if engine.dialect.has_schema(engine, org_id):
        meta = MetaData()
        post = Table('post', meta,
            db.Column('id', db.Integer, primary_key=True),
            db.Column('body', db.String(140)),
            db.Column('timestamp', db.DateTime, index=True, default=datetime.utcnow),
            db.Column('user_id', db.Integer),
            schema=org_id
        )
        post.create(engine)

基本上,我是flask&python的初学者。所以我不确定什么是正确的方法。

© www.soinside.com 2019 - 2024. All rights reserved.